1 / 19
文档名称:

第十一章 标准模板库(STL).doc

格式:doc   页数:19页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第十一章 标准模板库(STL).doc

上传人:中国课件站 2011/9/6 文件大小:0 KB

下载得到文件列表

第十一章 标准模板库(STL).doc

文档介绍

文档介绍:第十一章标准模板库(STL)
库(library)是一系列程序组件的集合,它们可以在不同的程序中重复使用。库函数设计的第一位的要求就是通用性,模板(template)为通用性带来了不可估量的前景,我们可以在使用模板时才对某些类型作选择。模板是标准C++实现代码复用的有力工具,特别是在有关数据结构的算法方面。为程序员提供大量实用的库是C++的又一特色。
标准模板库(Standard Template Library)是ANSI/ISO C++最有特色、最实用的部分之一。STL包含了容器类(container)、迭代子(iterator)和算法(algorithm)三个部分。泛型算法(generic algorithm)和函数对象(function object)的概念与使用使算法摆脱了对不同类型数据个性操作的依赖,这样就可以编出更具通用性的算法。
ANSI(American National Standards Institute,美国国家标准学会)的X3J16是C++语言标准的标准化委员会的名称,它于1989年正式启动,现在简称为J16。ISO(International anization,国际标准化组织)的JTC1/SC22/WG21技术委员会,与前者合作制定C++的标准。1997年11月完成的标准ISO14882,于1998年通过,它将相对稳定5年以上,其中一个较大的改动就是把模板引入标准库,使用模板类来代替传统的C++中定义的类。
STL(Standard Template Library,标准模板库)由惠普公司的专家开发,并在1994年首次加入到C++标准草案中的。
标准模板库简介
面向对象程序设计如果只改善可维护性,是不能取得程序员的青睐,程序员首先看中的是面向对象的可复用性。标准模板库(Standard Template Library)正是提供了这种可复用性。本书前面介绍的顺序表、链表、栈、队等数据结构,如果由程序员自己来开发也许比较困难。STL提供了一个标准化的模板化的对象容器库,其中包含多种数据结构及其算法,可以节省大量的时间和精力,而且程序是高质量的。
容器类是管理序列的类,是容纳一组对象或对象集的类。通过由容器类提供的成员函数,可以实现诸如向序列中插入元素,删除元素,查找元素等操作,这些成员函数通过返回迭代子来指定元素在序列中的位置。
迭代子是面向对象版本的指针,它提供了访问容器或序列中每个对象的方法。这样就可以把算法用于容器所管理的序列。
泛型算法不依赖于具体的容器,通用的算法更易于扩充。泛型算法中采用函数对象(function object)引入不同情况下同一算法的差异。它没有使用继承和多态,避免了虚函数的开销,使STL效率更高。
容器分为三大类:
顺序容器(sequence container or sequential container)
关联容器(associative container)
容器适配器(container adopter)

标准库容器类
标准库容器类
说明
顺序容器
vector(参量)
deque(双端队列)
list(列表)
从后面快速插入与删除,直接访问任何元素
从前面或后面快速插入与删除,直接访问任何元素
从任何地方快速插入与删除,双链表
关联容器
set(集合)
multiset(多重集合)
map(映射)
multimap(多重映射)
快速查找,不允许重复值
快速查找,允许重复值
一对一映射,基于关键字快速查找,不允许重复值
一对多映射,基于关键字快速查找,允许重复值
容器适配器
stack(栈)
queue(队列)
priority_queue(优先级队列)
后进先出(LIFO)
先进先出(FIFO)
最高优先级元素总是第一个出列
顺序容器和关联容器称为第一类容器(first-class container)。另外有四种容器称为近容器(near container):C语言风格数组、字符串string、操作1/0标志值的bitset和进行高速数学矢量运算的valarray。这四种容器称为近容器,是因为虽然提供与第一类容器类似的功能,但没有全部功能。
正如在Windows下所有应用软件都有类似的窗口一样,STL也使容器提供类似的接口。许多基本操作是所有容器都适用的,而有些操作则适用于类似容器的子集。这样就可以用新的类来扩展STL。。这些函数和运算符可通称为容器的接口。各容器的具体接口参见附录C。
所有标准库容器共有的函数
所有标准库容器共有的函数
说明
默认构造函数
拷贝构造函数
析构函数
e