- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北京林业大学 软件教研室 第11章 string类与STL简介 本章主要内容 (1)掌握C++标准类库中定义的string类的意义。 (2)掌握利用string类的构造函数完成字符串对象的创建。 (3)掌握string类的成员函数和运算符对字符串进行的各种操作。 (4)了解范型化程序设计的意义。 (5)理解标准模板库STL的基本概念。 (6)掌握容器、迭代器、算法的概念及使用方法。 (7)掌握vector容器的常用成员函数及其使用。 11.1 string类 字符串的存放采用的是数组 字符串的处理采用的是调用系统提供的库函数 11.1.1 string类的构造函数 11.1.2 string类的成员函数 11.1.3 string类的运算符 11.2 标准模板库STL 11.2.1 范型化程序设计 范型化程序设计(Generic Programming,GP)的思想就是要将程序写得尽可能通用,同时又不降低程序的效率。 GP思想不是OOP思想的一部分,它有着与OOP不同的设计技术。 C++并不是一种纯面向对象的程序设计语言,它的绝妙之处,就在于既满足了OOP(Object-oriented Programming,OOP) ,又成全了GP。 对于后者,模板立下了汗马功劳。 另外,尽管GP和OOP有诸多不同,但这种不同还不至于到“水火不容”的地步。 并且,在实际运用的时候,两者的结合使用往往可以使问题的解决更为有效。 作为GP思想实例的标准模板库STL本身便是一个很好的范例。 11.2.2 标准模板库 STL(Standard Template Library,标准模板库)是一个高效的C++程序库。 该库中包含了许多在计算机科学领域里所常用的基本数据结构和基本算法。 为C++的程序员提供了一个可扩展的应用框架,高度体现了软件的可复用性。 STL是C++标准库的一个重要组成部分,它由Alexander Stepanov、Meng Lee和David R Musser等人最先开发,它是与C++几乎同时开始开发的; 最初STL是选择Ada作为实现语言的; 后来他们选择了C++作为其实现语言。 接下来,STL又被添加进了C++库。 1996年,惠普公司又免费公开了STL,为STL的推广做了很大的贡献。 STL体现了范型化程序设计的思想,使用STL编写的程序具有高度的可重用性和可移植性,而且程序的效率也很高。 程序员不用思考具体实现过程,只要能够熟练的应用就可以了,这样他们就可以把更多的精力放在程序开发的别的方面。 STL被组织成头文件的形式来提供给程序员,例如: vector是向量的头文件 iterator是迭代器的头文件 algorithm是算法的头文件等 要注意的是,为了和C++中的常规头文件相区别,STL的头文件的文件名都没有.h的后缀。 STL中的全部成员都定义在名字空间std中。 STL主要包含了container(容器)、algorithm(算法)和iterator(迭代器)3部分内容,容器和算法通过迭代器可以进行无缝连接。 11.2.3 容器 容器是STL的一个非常重要组成部分,是指一种存储了有限集合数据元素的数据结构,其中包含的基本容器有7个: 向量(vector) 双端队列(deque) 列表(list) 集合(set) 多重集合(multiset) 映射(map) 多重映射(multimap) vector容器与C++中的数组相类同,按照STL的定义,它是一个模板类,因此能够包含任何类型的数据,可以根据程序的需要,自动的增大或缩小数组的长度。 vector容器中常用的成员函数如表所示。 11.2.4 迭代器 没有迭代器的撮合,容器和算法便无法完美的结合。 迭代器是一种范型指针,迭代器: 不仅可以方便对容器的操作; 而且STL的算法是通过迭代器来对容器中的元素进行定位和操作的。 另外,STL中还定义了输入、输出迭代器,是经过模板化了的原有标准库中的iostream部分,它提供了对C++程序输入输出的基本支持。 在功能上保持了与原有iostream的兼容,并且增加了异常处理的机制,并支持国际化(Internationalization)。 使用这些迭代器,不仅可以方便的完成键盘的输入和屏幕的输出,而且可以方便地进行文件的操作。 11.2.5 算法 STL的算法库中,包含了大约70个通用算法,这些算法均被设计成函数模板,因此具有通用性。 比如: find用于查找在容器中是否存在等于某个特定值的元素; sort用于对容器中的元素进行排序等。 所有这些操作都是在保证执行效率的前提下进行的,所以,如果在你使用了这些算法之后程序变得效率低了,首先一定不要怀疑这些算法本身,应该仔细
您可能关注的文档
- 面向对象程序设计(C++)( 第二版) 课件 第5章 函数.ppt
- 面向对象程序设计(C++)( 第二版) 课件 第6章 类与对象.ppt
- 面向对象程序设计(C++)( 第二版) 课件 第7章 继承与派生.ppt
- 面向对象程序设计(C++)( 第二版) 课件 第8章 多态性和虚函数.ppt
- 面向对象程序设计(C++)( 第二版) 课件 第9章 模板和异常处理.ppt
- 面向对象程序设计(C++)( 第二版) 课件 第10章 文件的输入输出.ppt
- 面向对象程序设计(C++)( 第二版) 课件 第11章 Visual C++编程基础.ppt
- 面向对象程序设计(C++)( 第二版) 课件 第12章 MFC应用程序实例.ppt
- 面向对象程序设计C++教程 教学课件 作者 于帆 赵妮 闫谦时 c++常用函数所在头文件一览.doc
- 面向对象程序设计及C++ 第2版 教学课件 作者 朱立华 俞琼 第1章_面向对象的程序设计及C++概述new.ppt
- 面向对象的程序设计语言——C++ 第二版 教学课件 作者 陈志泊 第12章.ppt
- 面向对象的程序设计语言——C++ 第二版 教学课件 作者 陈志泊习题答案 16110 面向对象的程序设计语言——C++(第二版)-习题参考答案.doc
- 面向对象的程序设计语言——C++ 教学课件 作者 陈志泊 王春玲 第2章.ppt
- 面向对象的程序设计语言——C++ 教学课件 作者 陈志泊 王春玲 第3章.ppt
- 面向对象的程序设计语言——C++ 教学课件 作者 陈志泊 王春玲 第4章.ppt
- 面向对象的程序设计语言——C++ 教学课件 作者 陈志泊 王春玲 第5章.ppt
- 面向对象的程序设计语言——C++ 教学课件 作者 陈志泊 王春玲 第6章.ppt
- 面向对象的程序设计语言——C++ 教学课件 作者 陈志泊 王春玲 第7章.ppt
- 面向对象的程序设计语言——C++ 教学课件 作者 陈志泊 王春玲 第8章.ppt
- 面向对象技术及UML教程教学课件 作者 李磊 王养廷 第1章 面向对象技术概述.ppt
文档评论(0)