Standard Template Library
STL(StandardTemplate Library),即标准模板库,是一个具有工业强度的、高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法,为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。这种现象有些类似于Microsoft Visual C++中的MFC(MicrosoftFoundation Class Library),或者是Borland C++ Builder中的VCL(VisualComponent Library)。 STL是最新的C++标准函数库中的一个子集,这个庞大的子集占据了整个库大约80%的分量。
introduction of STL
1. STL(StandardTemplate Library,标准模板库)是惠普实验室开发的一系列软件的统称。 2. STL提供了一系列具有良好结构的通用C++组件,这些组件提供强大的功能。标准库的设计必须确保所有的模板算法既能操作库中的数据类型,也能操作C++固有的数据类型。例如,所有的算法都适用于普通指针类型。库中各组件功能是独立的,或者说,用户可以自己设计算法操作库提供的数据结构,也可以使用标准库的算法操作自定义的数据类型。
the composition of the STL
1. STL是一个模板库,但其中也包含了许多个部分。一般来说,STL由如下的六大部分组成:容器(Containers)、算法(Algorithms)、迭代器(Iterators)、仿函数(Functors)、配接器(Adapters)、配置器(Allocators)。 2. STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器)。几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。
1. Algorithms
1. STL提供了大约100个实现算法的模板函数,用户可以通过调用一两个算法模板就可以完成所需要的功能,这样大大地提高了用户使用C++进行程序设计的效率。 2. 一般来说,STL中的算法部分主要由头文件<algorithm>、<numeric>和<functional>组成。其中,头文件<algorithm>由一大堆模板函数组成,常用的函数涉及比较、交换、查找等。 3. 头文件<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。头文件<functional>中则定义了一些模板类,用以声明函数对象。
2. Containers
1. 容器部分主要由头文件<vector>、<list>、<deque>、<set>、<map>、<stack>和<queue>组成。对于常用的一些容器和容器适配器(可以看作由其他容器实现的容器)。
3. iterators
1. 迭代器实际上是一种泛化指针,如果一个迭代器指向了容器中的某一成员,那么迭代器将可以通过自增自减来遍历容器中的所有成员。迭代器是联系容器和算法的媒介,是算法操作容器的接口。 2. 简单来说,几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了它本身所专有的迭代器,用以存取容器中的元素。
C + + STL Standard Template Library