1 什么是STL
STL就是C++ Standard Template Library,也就是标准模版库,是一个高效的C++程序库。STL包含六大组件:容器(container)、算法(algorithm)、迭代器(iterator)、配置器(allocator)、适配器(adapter)和函数对象(function object)。我们在学习这些组件时,应该按其重要程度来区别学习。重要成都由大到小是:泛型容器和泛型算法(表示任何类型和对象都可以使用这些容器和算法)>>迭代器>>配置器、适配器、函数对象。
STL的主要头文件包括13个,分别是<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<numeric>、<memory>、<queue>、<set>、<stack>、<utility>,具体内容如表1所示。
表1 STL的主要头文件
头文件 | 内容 |
<deque> | deque的定义 |
<vector> | vector的定义 |
<list> | list的定义 |
<map> | map、multimap的定义 |
<set> | set、multiset的定义 |
<algorithm> | 和<numeric>定义了STL的通用算法 |
<numeric> | 和<algorithm>定义了STL的通用算法 |
<iterator> | 所有在容器类型中定义的迭代器的祖先定义 |
<utility> | 定义了pair,定义了基本的iterator |
<memory> | 主要是智能指针auto_ptr的定义和一些全局临时内存处理函数的定义;头文件包含了另一个重要头文件<xmemory>,主要是空间配置器allocator的定义 |
<queue> | queue、priority_queue的定义 |
<stack> | stack的定义 |
<functional> | 通用函数对象的定义 |
-
为了方便地存储数据,设计了容器;
-
为了方便地遍历、查找、替换容器中的元素,设计了算法;
-
为了方便地让容器、算法独立工作,设计了在二者之间起桥梁作用的迭代器;
-
为了统一分配和控制容器中的内存,设计了配置器;
-
为了更好地给算法传入参数,设计了函数对象;
-
为了更好地扩展STL现有的接口,设计了适配器。
-