11.1 标准模板库简介

来源:互联网 发布:sql server身份验证sa 编辑:程序博客网 时间:2024/06/11 05:26
(library)是一系列程序组件的集合,它们可以在不同的程序中重复使用。库函数设计的第一位的要求就是通用性,模板(template)为通用性带来了不可估量的前景。

标准模板库(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)
迭代子是指针概念的泛型化,它指向容器中的元素,它能象指针一样增减,轮流指示容器中每个元素。所以说迭代子是面向对象版本的指针。

迭代子可以包括指针,但迭代子又不仅仅是一个指针。

迭代子把算法与容器连接起来。算法只是间接通过迭代子操作容器元素,算法本身与容器无关。算法通常返回迭代子。
0 0
原创粉丝点击