STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称
。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发
出来的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的
一段时间。
STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(
迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数
和类组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个
头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<m
ap>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。
总结一下它们和相应头文件的对应关系。
数据结构 描述 实现头文件
向量(vector) 连续存储的元素 <vector>
列表(list) 由节点组成的双向链表,每个结点包含着一个元素 <list>
双队列(deque) 连续存储的指向不同元素的指针所组成的数组 <deque>
集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于
元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 <set>
多重集合(multiset) 允许存在两个次序相等的元素的集合 <set>
栈(stack) 后进先出的值的排列 <stack>
队列(queue) 先进先出的执的排列 <queue>
优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的
一种队列 <queue>
映射(map) 由{键,值}对组成的集合,以某种作用于键对上的谓词排列 <map>
多重映射(multimap) 允许键对有相等的次序的映射 <map>