第六章 Using STL.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Using STL STL 概述 STL 一个重要特点是数据结构和算法 分离。尽管这是个简单的概念,但这种分离确实使得STL 变得非常通用。例如,由于STL sort() 函数是完全通用 ,你可以用它来操作几乎任何数据集合,包括 链表,容器和数组。 要点 STL 算法作为模板函数提供。为了和其他组件相区别,在本书中STL 算法以后接一对圆括弧 方式 表示,例如sort() 。 STL 另一个重要特性是它不是面向对象 。为了具有足够通用性,STL 主要依赖于模板而不是封装, 继承和虚函数 (多态性)——OOP 三个要素。你在STL 中找不到任何明显 类继承关系。这好像是一 种倒退,但这正好是使得STL 组件具有广泛通用性 底层特征。另外,由于STL 是基于模板,内联函 数 使用使得生成 代码短小高效。 【提示】确保在编译使用了STL 程序中至少要使用-O 优化来保证内联扩展。STL 提供了大量的模 板类和函数,可以在OOP 和常规编程中使用。所有 STL 大约50 个算法都是完全通用的,而且不依 赖于任何特定的数据类型。下面 小节说明了三个基本 STL 组件: 1)迭代器提供了访问容器中对象 方法。例如,可以使用一对迭代器指定list 或vector 中的一定范 围 对象。迭代器就如同一个指针。事实上,C++ 指针也是一种迭代器。但是,迭代器也 可以是那些定义了operator*() 以及其他类似于指针 操作符地方法 类对象。 2 )容器是一种数据结构,如list,vector,和deques ,以模板类 方法提供。为了访问容器中的数 据,可以使用由容器类输出 迭代器。 3 )算法是用来操作容器中 数据的模板函数。例如,STL 用sort()来对一个vector 中 数据进行排 序,用find()来搜索一个list 中 对象。函数本身与他们操作 数据 结构和类型无关,因 此他们可以在从简单数组到高度复杂容器的任何数据结构上使用。 头文件 为了避免和其他头文件冲突, STL 头文件不再使用常规 .h 扩展。为了包含标准 string 类,迭 代器和算法,用下面 指示符: #include string #include iterator #include algorithm 如果你查看STL 头文件,你可以看到象iterator.h 和stl_iterator.h 这样 头文件。由于这些名字在 各种STL 实现之间都可能不同,你应该避免使用这些名字来引用这些头文件。为了确保可移植性,使用 相应 没有.h 后缀 文件名。表1 列出了最常使用 各种容器类 头文件。 表 1. STL 头文件和容器类 #include Container Class deque deque list list map map, multimap queue queue, priority_queue 1 set set, multiset stack stack vector vector, vectorbool [Jicrosoft CopyRight 2012] | [He

文档评论(0)

xiaofei2001129 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档