大部分人提到 C++ 标准库的时候首先想到的就是STL
,STL
的全称是Standard Template Library
,它背后的技术支撑是模板,由于很多人对于模板本身的不了解,导致很多人对于 STL
的理解也非常的片面。有些人把STL
等同于容器,有些人把STL
等同于标准库。
C++支持非常多的编程范式【1】,C++标准库中用到的基本上是基于对象和泛型这两种(没错,标准库中面向对象其实非常少,没记错的话,只在异常体系中出现过),很明显STL
不等同于C++标准库。那是不是说标准库中的泛型部分就属于STL
呢?答案也是否定的。C++标准库中的大部分类都是泛型类,但是不是所有的泛型类都是STL
,比如 std::string
就属于泛型类,但是它不属于STL
。
很多人提到STL
首先想到的是容器,容器属于STL
中非常重要的部分,但是绝对不是唯一的部分,实际上STL
由 6 部分组成【2】: