您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 传智扫地僧王保明stl 文档,个人整理
  所属分类: 其它
  开发工具:
  文件大小: 1mb
  下载次数: 0
  上传时间: 2019-01-11
  提 供 者: qq_29******
 详细说明:传智播客 传智扫地僧王保明老师的stl文档,讲的很好,,C++ STL 12 vector的删除 ···········.········ 6 13 vector小结 02.3 Deque容器 27 1. Deque简介 27 2 deque对象的默认构造 27 3. deque对象的带参数构造… 28 4. deque的赋值 28 5. deque头部和尾部的添加移除操作 29 6 deque的数据存取30 7deue与迭代器.130 8 deque的大小.31 9 deque的插入 32 10. deque的删除 .33 11. deque中查找某个数在数组下标的值 34 10.24 stack容器 34 1. stack对象的默认构造 34 2. stack对象的拷贝构造与赋值… 35 3. stack的push()0与pop()方法 35 4. stack的数据存取 35 5. stack的大小 ·.···:.:·:·...··4.··中· 37 1025 Queue容器. 38 1. Queue简介, 38 2. queue对象的默认构造 3. queue的push)与pop()方法 8 4. queue对象的拷贝构造与赋值…… 38 5. queue的数据存取 垂着垂垂 ∴39 6 queue的大小 1026Lst容器 1.List简介…… ·:·············· ..40 2.lst对象的默认构造. 40 3|ist对象的带参数构造…. 40 4.list的赋值 5.list头尾的添加移除採作.. 41 6.list的数据存取 42 7.list与迭代器 ……42 8.list的大小 .43 9.list的插入 44 10.list的删除. 章;看看4垂看垂牵音垂·垂音垂音音音.看看垂 ……45 11.lst的反序排列. ·.··.······.:·········.············...:···.··.··.·.···..·...··::··.··· 46 小结 C++ STL 10.27优先级队列 priority_ queue 47 1028Set和 multiset容器 48 1.set/ multiset的简介 ..48 2.set/ multiset对象的默认构造 50 3.set的插入与迭代器 50 4.Set集合的元素排序 D··垂音垂垂 ∴50 5.函数对象 functor的用法(白定义的数据的排序)… 51 6.set对象的拷贝构造与赋值… 54 7.set的大小 55 8set的删除 9set的查找 56 10.par的使用 .57 小结. 10.29Map和 multimap容器 8 map/ multimap的简介 58 2map/ multimap对象的默认构造… 58 3.map对象的拷贝构造与赋值.… 59 4map的插入与迭代器. 59 5.map的大小 .62 5.map的删除… 62 6map的查搜 音垂非音·。垂·看 63 10210容器共性机制研究 68 1容器的共通能力 68 2各个谷器的使用吋机 03算法…… 70 031算法基础.… ∴70 10.311算法概述…… ∴70 1031.2STL中算法分类 .70 10.313查找算法(13个):判断容器中是否包含某个值1 10314堆算法(4个 10.315关系算法(8个) 74 10316集合算法(4个 10.316列组合算法(2个) 76 10.317排序和通用算法(14个):提供元素排序策略… 76 10.318删除和替换算法(15个118 10.319生成和变异算法(6个) ∴80 103110算数算法(4个) 81 10.3111常用算法汇总…182 10.32STL算法中函数对象和谓词. 82 10321函数对象和谓词定义… 82 C++ STL 10322一元函数对象案例 83 10.323一元谓词案例 86 10324二元函数对象案例 .87 10325二元谓词案例 10326预定义函数对象和函数适配器 91 10327数适配器.93 10.32.8sTL的容器算法迭代器的设计理念…………97 10.33常用的遍历算法 97 for eacho 97 transform()…,…,,…, for each()和 transform()算法比较 看看·垂番音D垂。·。垂·垂.。·看番 100 1034常用的查找算法 ·音垂 ∴102 djacent find()… 102 binary search(二分法查找 102 count 103 count_f()… “·· ∴103 find() 104 .104 10.35常用的排序算法 垂垂着 104 merge(................. 垂 104 105 random shuffle()…,…,…,…,…,…,…,,…,…………106 reverse 107 10.36常用的拷贝和替换算法.….107 copy()…… ∴107 replace()..... 看··。·看看看垂 108 replace ifo 108 wap( 108 1037常用的算术和生成算法. ·:···· 109 accumulate()-… ..109 110 1038常用的集合算法 110 set_ unIon(), set intersection(,set_ difference()……… .,110 104STL综合案例. 111 10.41案例学校演讲比赛 .11 10.411学校演讲比赛介绍 ∴111 10.412需求分析 112 10.413实现思路. ·看看垂南垂,垂看音,。垂。章。音音音;看看垂音垂量D音看垂。章垂。音非垂音;着看垂垂垂。音音音音垂 .113 10.414实现细节 …113 1042案例:足球比赛 C++ STL 10、STL实用技术专题 10.1STL标准模板库〕理论基础 1011基本概念 sTL( Standardτ emplate Library,标准模板库)是惠普实验室开发的一系列软件 的统称。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长 的一段时间。 STL的从广义上讲分为三类: algorithm(算法)、 container(容器)和 iterator (迭代器),容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了 更好的代码重用机会。在C+标准中,STL被组织为下面的13个头文件: < algorithm>、< deque>、< functional、< iterator>< vector>list>、、< memory>、 < numeric>、< queue>、、< stack>和< utility> 宇符串 STL 算法 迭代器 容器 STL详细的说 容器( Container) //当于链表 算法( Algorithm) 迭代器 terator) /相当于指针 仿函数( Function object) 适配器( Adaptor) 空间配制器( allocator 使用sTL的好处 1.STL是C+的一部分,因此不用额外安装什么,它被内建在你的编译器之 内 2.SL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概 念,但是这种分离确实使得STL变得非常通用 例如,在STL的 vector容器中,可以放入元素、基础数据类型变量、元素 的地址; STL的sort(函数可以用来操作 vector,list等容器 C++ STL 3.程序员可以不用思考STL具伓的实现过程,只要能够熟练使用STL就OK ∫。这样他们就可以把精力放在程序开发的别的方面。 4.STL具有髙可重用性,高性能,高移植性,跨平台的优点 5.高可重用性:STL中几乎所有的代码都采用∫模板类和模版函数的方式实 现,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。关于 模板的知识,口绎给大家介绍了。 6.高性能:如map可以高效地从十万条记录里面查找出指定的记录,因为map 是采用红黑树的变体实现的。(红黑树是平横二叉树的一种) 7.高移植性:如在项目A上用STL编写的模块,可以直接移植到项目B上。 8.跨平台:如用 windows的 visual studio编写的代码可以在 Mac os的 XCode 上直接编译。 9.程序员可以不用思考STL具体的实现过程,只要能够熟练使用STL就OK 了。这样他们就可以把精力放在程序开发的别的方面。 总之:招聘工作中,经常遇到C艹+程序员对S仉L不是非常了解。大多是有 个大致的映像,而对于在什么情况下应该使用哪个容器和算法都感刭比较茫然。 STL是C艹程序员的一项不可或缺的基木技能,掌握它对提升C艹编程大有裨益。 1012容器 在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算 法的重要性,当程序中存在着对时间要求很高的部分时,数据结构的选择就显得 更加重要。 经典的数据结构数量有限,但是我们常常重复着一些为了实现向量、链表等 结构而编写的代码,这些代码都十分相似,只是为了适应不同数据的变化而在细 节上有所出入。STL容器就为我们提供了这样的方便,它允许我们重复利用已有 的实现构造自己的特定类型下的数据结构,通过设置一些模板,SIL容器对最常 用的数据结构提供了支持,这些模板的参数允许我们指定容器中元素的数据类 型,可以将我们许多重复而乏味的工作简化。 容器部分主要由头文件< vector>,,< deque>,,,< stack>和 < queue>组成。对于常用的一些容器和容器适配器(可以看作由其它容器实现的 容器),可以通过下表总结一下它们和相应头文件的对应关系 10121容器的概念 用来管理一组元素 2 C++ STL Vector Set/Multiset 「→ eque Map/multimap kk(山山 10122容器的分类 序列式容器( Sequence containers) 每个元素都有固定位置一一取决于插入时机和地点,和元素值无关。 vector、 deque、list 关联式容器( Associated containers) 元素位置取决于特定的排序准则,和插入顺序无关 sei, multiset, map, mu1limap 数据结构 描述 实现头文件 向量( vector) 连续存储的元素 Vector) 列表(1ist) 由节点组成的双向链表,每个结点包含着〈1ist> 个元素 双队列( deque 连续储的指向不同元素的指针所组成的< deque 数组 集合(set) 由节点组成的红黑树 (multiset) 栈( stack) 后进先出的值的排列 队列( queue) 先进先出的执的排列 Kqueue> 优先队列 元素的次序是由作用于所存储的值对上的< queue ( priority queue,)某种谓词决定的的一种队列 映射(map) 出{键,值}对组成的集合,以某种作用于 键对上的谓词排列 多重映射 允许键对有相等的次序的映射 Kmap) (multimap) 1013迭代器 迭代器从作用上来说是最基木的部分,可是理解起来比前两者都要费力一 些。软件设计有一个基本原则,所有的问题都可以通过引进一个间接层来简化, C++ STL 这种简化在STL中就是用迭代器来完成的。概括来说,迭代器在STL中用来将算 法和容器联系起来,起着一种黏和剂的作用。几乎STL提供的所有算法都是通过 迭代器存取元素序列进行工作的,每一个容器都定义了其本身所专有的迭代器, 用以存取容器中的元素。 迭代器部分主要由头文件< utility>,< terator>和< memory>组成。 < utility>是一个很小的头文件,它包括了贯穿使用在STL中的儿个模板的声明, 1 terator>中提供了迭代器使用的许多方法,而对于< memory>的描述则十分的困 难,它以不同寻常的方式为容器中的元素分配存储空间,同时也为某些算法执行 期间产生的临时对象提供机制,< memory>中的主要部分是模板类a1 locator,它 负责广生所有容器中的默认分配器。 10.14算法 函数库对数据类型的选择对其可重用性起着至关重要的作用。举例来说, 个求方根的函数,在使用浮点数作为其参数类型的情况下的可重用性肯定比使用 整型作为它的参数类性要高。而C-通过模板的机制允许推迟对某些类型的选 择,直到真正想使用模板或者说对模板进行特化的时候,STL就利用了这一点提 供了相当多的有用算法。它是在一个有效的框架中完成这些算法的一—可以将所 有的类型划分为少数的几类,然后就可以在模版的参数中使用一种类型替换掉同 一种类中的其他类型。 STL提供了大约100个实现算法的模版函数,比如算法 for each将为指 定序列中的每个元素调用指定的函数, stable sort以你所指定的规则对序列 进行稳定性排序等等。这样一来,只要熟悉了STL之后,许多代码可以被人人的 化简,只需要通过调用一两个算法模板,就可以完成所需要的功能并大大地提升 效率。 算法部分主要由头文件< algorithm>,< numer c>和< functiona1>组成。 < algori thm>是所有ST头文件中最大的一个(尽管它很好理解),它是由一大 堆模版函数组成的,可以认为每个函数在很大程度上都是独立的,其中常用到的 功能范围涉及到比较、交换、査找、遍历操作、复制、修改、移除、反转、排序 合并等等。< numeriC>体积很小,只包括几个在序列上面进行简单数学运算的模 板数,包括加法和乘法在序列上的一些操作。< functional>中则定义了一些模 板类,用以声明函数对象。 1015C++标准库 C++强大的功能来源于其丰富的类库及库函数资源。C++标准库的内容总共在 50个标准头文件中定义。在C+开发中,要尽可能地利用标准库完成。这样做的 C++ STL 直接好处包括:(1)成木:已经作为标准提供,何苦再花费时间、人力重新开 发呢;(2)质量:标准库的都是经过严格测试的,正确性有保证;(3)效率: 关于人的效率已经体现在成本中了,关于代码的执行效率要相信实现标准库的大 牛们的水平;(4)良好的编程风格:采川行业中普遍的做法进行开发 在C+程序设计课程中,尤其是作为第一门程序设计课程,我们注重了语法 语言的机制等方面的内容。程序设计能力的培养有个过程,跨过基本的原理性知 识直接进入到工程中的普遍做法,由于跨度决定了其难度。再者,在掌握了基本 原理的基础上,在认识标准库的问题上完仝可以凭借实践,逐步地掌握。标准库 的学习不需要认认真真地读书,需要的是在了解概貌的情况下,在实践中深入。 这个任务就是要知道C+程序设计课程中不讲的,但对程序设计又很重要的 这部分内容。至少我们要能先回答出“有什么”的问题。 C++标准库的内容分为10类,分别是(建议在阅读中,将你已经用过或听说 过的头文件划出来): C1.标准库中与语言支持功能相关的头文件 头文件 述 cstddet)定义宏NLL和 offsetof,以及其他标准类型 size t和 ptrdiff t与对应的标准 头文件的区别是,NUL是C+空指针常量的补充定义,宏 offsetof接受结构或者联 合类型参数,只要他们没有成员指针类型的非静态成员即可。 K1 emits>提供与基本数据类型相关的定义。例如,对于每个数值数据类型,它定义了可以表 示出来的最大值和最小值以及二进制数字的位数 c1 imits>提供与基本整数数据类型相关的C样式定义。这些信息的C+样式定义在( limits> float>提供与基本浮点型数据类型相关的C样式定义。这些信息的C+样式定义在( limits 中 提供支持程序启动和终止的宏和函数。这个头文件还声明了许多其他杂项函数,例 如搜索和排序函数,从字符串转换为数值等函数它与对应的标准C头文件 stdlib.h 不同,定义了 abort(od)。 abort o函数还有额外的功能,它不为静态或自动对象 调用析构函数,也不调用传给 atexit(函数的函数。它还定义了e0函数的额外 功能,可以释放静态对象,以注册的逆序调用 atexit注册的函数。清除并关闭所 有打开的C流,把控制权返回给主机环境。 Knew> 支持动态内存分配 Ktypeinfo支持变量在运行期间的类型标识 cxccpt1o持异常处理,这是处理程序中可能发生的错误的一种方式 cstdarg>持接受数量可变的参数的函数。即在调用函数时,可以给函数传送数量不等的数 据项。它定义了宏 va arg、 va end、 va start以及 va list类型 cset] mp>为C样式的非本地跳跃提供函数。这些函数在C+中不常用 signal>为中断处理提供C样式支持
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: 传智扫地僧
 输入关键字,在本站1000多万海量源码库中尽情搜索: