更多资源请关注微信公众号:码客资源网

STL是C++通用库,主要由迭代器、算法、容器、仿函数、内存分配器和配接器组成。
STL主要的主要功能都被声明在13个头文件中,它们分别是:< algorithm >、<  deque >、< functional >、< iterator>、< vector>、< list>、< map>、< memory>、< numeric>、< queue>、< set>、< stack>、< utility>。

1、容器

STL中已经提供的容器(序列式容器和关联式容器)主要包含以下内容:
 - vertor< T >:     一种向量
 - list < T>:          一种双向链表容器,完成C++中链表的所有功能
 - queue< T>:     一种队列容器,完成C++中队列的所有功能
 - statck< T>:      一种栈容器,完成C++中栈的所有功能
 - deque< T>:     一种双端队列容器,完成C++中所有栈的功能
 - priority_queue< T>:是一种按值排序的队列容器
 - set< T>:          一种集合容器
 - multiset< T>: 一种容许重复元素的集合容器
 - map< key, val>:一种关联数组容器
 - multimap< key,val>:一种容许出现重复key值的关联数组容器


STL提供的每种容器都提供了许多操作行为和变量成员以及迭代器,作为容器的成员,必须满足以下三个条件:
 - 元素必须是可复制的
 - 元素必须是可指派(修改)的
 - 元素内存必须是可释放的,即析构函数不能为private


容器经常使用到的数据结构包括:string字符串、bitset、valarray。

 
2、算法

STL为我们提供了大量非常好用的数据结构算法,包括查询、排序、赋值、修改、数值运算等,这些算法都是以模板的形式在命名空间std内实现的,通过迭代器的协助,算法程序可以用于任意容器,使用算法时需要包含< algorthm>来获取使用权。


3、迭代器

迭代器大概可以分为五种类型,分别是:

 - 输入迭代器
 - 输出迭代器
 - 前向迭代器
 - 双向迭代器
 - 随机访问迭代器(功能最为强大)


迭代器用来在一个对象集群集的元素上进行遍历工作,对象集群可以是容器,也可以是容器的一部分,迭代器主要是为容器提供一组很小的公共接口,利用这个接口,某项操作可以行进至集群内的任意位置。不同类型的数据,迭代器也不相同,迭代器主要用来遍历容器,使算法能够不依赖容器而完成特定任务,迭代器的出现使算法和容器分离成为可能。

4、仿函数

仿函数可以理解为函数的一般形式,仿函数通过运算符定义显著提高了代码运行效率。


5、内存配置器及配接器

最常用的配接器有istream_iterator,提供了函数copy的接口。另外STL还提供了3种容器配接器:stack< Container>,queue< Container>、deque< Container>。