- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C面向对象程序设计第11章C标准模板库基础间
第11章 C++标准模板库基础 STL概述 STL的发展和特点 STL最早由Alexander Stepanov和Meng Lee等在惠普实验室开发完成,于1994年提交给ANSI/ISO标准C委员会并通过,从而成为标准C++的一部分。简单地说,STL是以C中的模板语法为基础建立起来的一套包含基础数据结构和算法的代码库。 STL的特点是实现了“类型参数化”,即STL的代码中可处理任意自定义类型的对象, 另外一个特点是泛型编程(Generic Programming),这是与面向对象相并列的另外的一个编程模型,它以模板为基础,弱化了实体类型的差异,简化了编程时问题抽象的模型,提供了更好的封装性和弹性,对于繁杂的面向对象编程毫无疑问是一种巨大的帮助。 C++标准库 C++自带一个标准库,称为C++标准库,在编程时可以直接使用其中丰富的函数和类库等,其目的是避免重复劳动,提高程序设计效率。 C++标准库的构成如图所示。 STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相对于传统的由函数和类组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文件:algorithm、deque、functional、iterator、vector、list、map、memory、numeric、queue、set、stack和utility。 STL的使用 使用STL的名字空间 为了避免两者混淆和冲突,STL的sort()以及其他标志符都封装在名字空间std中。STL的sort()算法编译为std::sort(),从而避免了名字冲突。 为此,使用STL时必须将下面的语句插入到源代码文件开头: using namespace std; 这样可直接把程序代码定位到std命名空间中。 使用STL的示例 在使用STL时,容器元素的输入输出流将头文件改为iostream,它也是STL的组成部分,不能使用iostream.h头文件,否则会导致出现编译错误。 迭代器 1. 自己设计迭代器 2. STL的迭代器及其使用 常用的迭代器有iterator、 const_iterator、 reverse_iterator、 const_reverse_iterator等。 迭代器的常用运算如下。 ++:正向移动迭代器。 --:反向移动迭代器。 *:返回迭代器所指的元素值。 容器 顺序容器 顺序容器按照线性次序位置存储数据,即第1个元素、第2个元素,依此类推。 1. vector(向量容器) 它是一个向量类模板。其主要的成员函数有默认构造函数、复制构造函数、析构函数、 max_size()、 size()、 []、 push_back()、 insert()、 swap、 empty()、 front()、 back()、 erase()、 clear()、 等。 2. deque(双端队列容器) 它是一个双端队列类模板。其主要的成员函数有默认构造函数、复制构造函数、析构函数、 empty、 size、 push_front()、 push_back()等。 3. list(表容器) 它是一个双链表类模板。其主要的成员函数有默认构造函数、复制构造函数、析构函数、 empty、 size、 push_back()等。 关联容器 容器是按关键字存储元素,如学号、姓名和班号等。程序通过关键字访问关联容器中的元素,这些关键字可能与元素在容器中的位置无关。STL提供的关联容器如下。 set(集合容器) multiset(多重集容器) map(映射容器) multimap(多重映射容器) 适配器容器 适配器容器可以看作由其他容器实现的容器,也就是说,适配器容器包含另一个容器作为其基本存储结构。STL提供的适配器容器如下。 stack(栈容器) queue(队列容器) priority_queue(优先队列容器) 算法 非可变序列算法 这类算法指的是不直接修改容器数据对象的算法。 主要包括如下几个 find:查找。 adjacent_find:相邻且相等查找。 count:计算相匹配的元素的数目。 count_if:计算指定条件相匹配的元素的数目。 for_each:对指定范围内的每个元素施加相应的操作。 equal:比较容器中两个区间的元素。 search:子序列匹配。 可变序列算法 这类算法指的是可以修改容器数据对象的算法。 主要包括如下几个 copy:前向复制
您可能关注的文档
- AutoCAD制图辅助设计案例教程 第6章 图形尺寸的标注与编辑.ppt
- AutoCAD制图辅助设计案例教程 第9章 三维建模功能.ppt
- AutoCAD建筑制图实例教程 第1章 AutoCAD 2006概述.ppt
- AutoCAD建筑制图实例教程 第2章 二维基本绘图命令.ppt
- AutoCAD建筑制图实例教程 第3章 二维图形编辑.ppt
- AutoCAD2009工程绘图技术 第8章 三维造型.ppt
- AutoCAD建筑制图教程 第11章 轴测图.ppt
- AutoCAD建筑制图教程 第13章 三维绘图.ppt
- AutoCAD建筑制图教程 第2章 绘制线段、平行线及圆.ppt
- AutoCAD建筑制图实例教程 第8章 建筑平面图实例.ppt
原创力文档


文档评论(0)