库
(library)是一系列程序组件的集合,它们可以在不同的程序中重复使用。库函数设计的第一位的要求就是通用性,
模板
(template)为通用性带来了不可估量的前景。
标准模板库 (Standard Template Library)简称 STL ,是ANSI/ISO C++最有特色、最实用的部分之一。STL包含: 容器类 (container)、 迭代子 (iterator)、 算法 (algorithm)
泛型算法 (generic algorithm)和 函数对象 (function object)使算法摆脱了对不同数据类型个性操作的依赖。
容器类是管理序列的类,是容纳一组对象或对象集的类。通过由容器类提供的成员函数,可以实现诸如向序列中插入元素,删除元素,查找元素等操作,这些成员函数通过返回迭代子来指定元素在序列中的位置。
容器分为三大类:
顺序容器和关联容器称为第一类容器(first-class container),参见下表。
容器提供类似的接口。许多基本操作是所有容器都适用的,而有些操作则适用于类似容器的子集,可以用有类似操作的新类来扩展STL。参见表11.2 所有标准库容器共有的函数
◆ 2、 泛型算法(Generic Algorithm)
在模板中算法不依赖于具体的数据类型,而泛型算法更进一步不依赖于具体的容器。
泛型算法中采用 函数对象 (function object)引入不同情况下同一算法的差异。它没有使用继承和多态,避免了虚函数的开销,使STL效率更高。
◆ 3、迭代子(Iterator)
迭代子是指针概念的泛型化,它指向容器中的元素,它能象指针一样增减,轮流指示容器中每个元素。所以说迭代子是面向对象版本的指针。
迭代子可以包括指针,但迭代子又不仅仅是一个指针。
迭代子把算法与容器连接起来。算法只是间接通过迭代子操作容器元素,算法本身与容器无关。算法通常返回迭代子。
标准模板库 (Standard Template Library)简称 STL ,是ANSI/ISO C++最有特色、最实用的部分之一。STL包含: 容器类 (container)、 迭代子 (iterator)、 算法 (algorithm)
泛型算法 (generic algorithm)和 函数对象 (function object)使算法摆脱了对不同数据类型个性操作的依赖。
标准模板库简介
◆ 1、容器类(Container)容器类是管理序列的类,是容纳一组对象或对象集的类。通过由容器类提供的成员函数,可以实现诸如向序列中插入元素,删除元素,查找元素等操作,这些成员函数通过返回迭代子来指定元素在序列中的位置。
容器分为三大类:
- 顺序容器(Sequence Container or Sequential Container)
- 关联容器(Associative Container)
- 容器适配器(Container Adopter)
顺序容器和关联容器称为第一类容器(first-class container),参见下表。

容器提供类似的接口。许多基本操作是所有容器都适用的,而有些操作则适用于类似容器的子集,可以用有类似操作的新类来扩展STL。参见表11.2 所有标准库容器共有的函数
◆ 2、 泛型算法(Generic Algorithm)
在模板中算法不依赖于具体的数据类型,而泛型算法更进一步不依赖于具体的容器。
泛型算法中采用 函数对象 (function object)引入不同情况下同一算法的差异。它没有使用继承和多态,避免了虚函数的开销,使STL效率更高。
◆ 3、迭代子(Iterator)
迭代子是指针概念的泛型化,它指向容器中的元素,它能象指针一样增减,轮流指示容器中每个元素。所以说迭代子是面向对象版本的指针。
迭代子可以包括指针,但迭代子又不仅仅是一个指针。
迭代子把算法与容器连接起来。算法只是间接通过迭代子操作容器元素,算法本身与容器无关。算法通常返回迭代子。