1. STL介绍
STL是Standard Template Library的简称,中文名标准模板库。STL是C++的一部分,因此不用安装额外的库文件。STL常见版本有HP STL、PJSTL、 SGI STL等。
STL的价值体现在两个方面。从低层次来说,STL为我们提供了一套极具实用价值的零部件,以及一个整合的组织;从高层次来说,STL为我们展示了一种以泛型思维为基础、模块化的、条理分明的软件组件分类学。STL的创新价值就在于依据泛性思维假设了一个概念结构,这个以抽象概念为主体而非实体类为主体的结构,形成了一套严格的接口标准。在此标准之下,各个组件之间具有最大的独立性,并且以迭代器结合起来,或以配接器互相配接,或以仿函数动态选择某种策略。
STL就如同悟空的金箍棒一样,功能无限,但如果我们不能充分的掌握STL,就无法发挥其巨大威力,是我们的巨大损失。所以,我将以使用者的角度,通过代码展示如何使用好STL这项技术。
STL主要有六大组件组成:容器(Container)、迭代器(Iterator)、空间分配器(Allocator)、算法(Algorithm)、仿函数(Functor)、配接器(Adapter)。
图1六大组件关系(摘自《STL源码剖析》)
作为使用者,我们关注的角度主要有:
容器的使用——容器的创建、插入、修改、删除、释放等操作
算法的使用——排序、排列、查找、统计、轮询、删除、替换、比较等操作
除此自外的其它组件我们将在下文有所提及,但不做专门介绍。