第十三章 C++_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文档。上传文档
查看更多
C++:STL标准入门汇总 学无止境 !!! 第一部分 :(参考百度百科)  一、STL简介 STL (Standard Template Library ,标准模板库)是惠普实验室开发的一系列软件的统称。它是 由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来 的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。   STL的代码从广义上讲分为三类 :algorithm (算法)、container (容器)和iterator (迭代器),几乎所 有的代码都采用了模板类和模版函数的方式 ,这相比于传统的由函数和类   组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文 件 :algorithm、deque、functional、iterator、vector、list、map、 memory、numeric、queue、set、stack和utility。  二、算法 大家都能取得的一个共识是函数库对数据类型的选择对其可重用性起着至关重要的作用。举例来说 ,一 个求方根的函数 ,在使用浮点数作为其参数类型的情况下的可重用性肯定比 使用整型作为它的参数类性要高。而C++通过模板的机制允许推迟对某些类型的选择 ,直到真正想使用 模板或者说对模板进行特化的时候 ,STL就利用了这一点提供了相当多的有用 算法。它是在一个有效的框架中完成这些算法的——你可以将所有的类型划分为少数的几类 ,然后就可 以在模版的参数中使用一种类型替换掉同一种类中的其他类型。 STL提供了大约100个实现算法的模版函数 ,比如算法for_each将为指定序列中的每一个元素调用指定的 函数 ,stable_sort以你所指定的规则对序列进行稳定性排序等等。这样一来 ,只要我们熟悉了STL之后 ,许多代码可以被大大的化简 ,只需要通过调用一两个算法模板 ,就可以完 成所需要的功能并大大地提升效率。   算法部分主要由头文件algorithm ,numeric和functional组成。 algorithm是所有STL头文件中最大的一个 (尽管它很好理解),它是由一大堆模版函数组成的 ,可以 认为每个函数在很大程度上都是独立的 ,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、 复制、修改、移除、反转、排序、合并等等。   numeric体积很小 ,只包括几个在序列上面进行简单数学运算的模板函数 ,包括加法和乘法在序列上 的一些操作。   functional中则定义了一些模板类 ,用以声明函数对象。   三、容器 在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算法的重要性 ,当程序中存在 着对时间要求很高的部分时 ,数据结构的选择就显得更加重要。 经典的数据结构数量有限 ,但是我们常常重复着一些为了实现向量、链表等结构而编写的代码 ,这些代 码都十分相似 ,只是为了适应不同数据的变化而在细节上有所出入。STL容器 就为我们提供了这样的方便 ,它允许我们重复利用已有的实现构造自己的特定类型下的数据结构 ,通过 设置一些模版类 ,STL容器对最常用的数据结构提供了支持 ,这些模板的参数 允许我们指定容器中元素的数据类型 ,可以将我们许多重复而乏味的工作简化。   容器部分主要由头文件vector,list,deque,set,map,stack和queue组成。对于常用的一些 容器和容器适配器 (可以看作由其它容器实现的容器),可以通过下表总结一下它们和相应头文件的对 应关系。   向量(vector) 连续存储的元素vector 列表(list)       由节点组成的双向链表 ,每个结点包含着一个元素list 双队列(deque)连续存储的指向不同元素的指针所组成的数组deque 集合(set) 由节点组成的红黑树 ,每个节点都包含着一个元素 ,节点之间以某种作用于元素对的谓词排 列 ,没有两个不同的元素能够拥有相同的次序 set 多重集合(multiset) 允许存在两个次序相等的元素的集合 set 栈(stack) 后进先出的值的排列 stack 队列(queue) 先进先出的执的排列 queue 优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队 列 queue 映射(map) 由{键 ,值}对组成的集合 ,以某种作用于键对上的谓词排列 map 多重映射(multimap) 允许键对有相等的次序的映射 map   四、迭代

文档评论(0)

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

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

1亿VIP精品文档

相关文档