什么是STL
STL(Standard Template Library,标准模板库)的从广义上讲分为三类:
algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。
STL的六大组件
- 容器(Container)
- 算法(Algorithm)
- 迭代器(Iterator)
- 仿函数(Function object)
- 适配器(Adaptor)
- 空间配制器(allocator)
使用STL的好处
- STL是C++的一部分,不用额外安装。STL的一个重要特点是数据结构和算法的分离,这种分离确实使得STL变得非常通用。
- 高可重用性:STL中几乎所有的代码都采用了模板类和模版函数的方式实现,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。
- 高性能:如map可以高效地从十万条记录里面查找出指定的记录,因为map是采用红黑树的变体实现的。
容器(Container)
容器:用来管理元素的类,常见的如vector、stack、queue、map、arrary等,不多做解释。
迭代器(Iterator)
迭代器:在STL中用来将算法和容器联系起来,起着一种黏和剂的作用。几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了其本身所专有的迭代器,用以存取容器中的元素。
算法(Algorithm)
STL提供了大约100个实现算法的模版函数,比如算法for_each将为指定序列中的每一个元素调用指定的函数。再比如,stable_sort以 你所指定的规则对序列进行稳定性排序等等。只要熟悉了STL之后,只需要通过调用一两个算法模板,就可以完成所需要的功能,极大地提升效率。
算法部分主要由头文件algorithm,numeric和functional组 成。algorithm是所有STL头文件中最大的一个(尽管它很好理解),它是由一大堆模版函数组成的