C程序设计-对象分册(第7章).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C程序设计-对象分册(第7章).ppt》由会员分享,可在线阅读,更多相关《C程序设计-对象分册(第7章).ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C/C+程序设计教程郑秋生 主编1/16/20232第第7章章 标准模板库标准模板库STL介绍及应用介绍及应用n本章学习重点掌握内容:本章学习重点掌握内容:n标准模板库标准模板库STL的基本概念的基本概念n标准模板库标准模板库STL的组成部分的组成部分n命名空间的概念及使用命名空间的概念及使用n容器的概念和使用容器的概念和使用n迭代器的概念和使用迭代器的概念和使用n算法的概念和使用算法的概念和使用n标准模板库标准模板库STL的应用的应用1/16/20233第第7章章 标准模板库标准模板库STL介绍及应用介绍及应用n7.1标准模板库标准模板库STL的概念的概念n7.2容器(容器(Containe
2、r)n7.3迭代器(迭代器(Iterator)n7.4算法(算法(Algorithm)n7.5 综合应用实例综合应用实例1/16/202347.1 标准模板库标准模板库STL的概念的概念 nSTL最初是由惠普实验室开发的一系列组件,是标准C+库的重要补充之一。n从逻辑层次来看,STL体现了泛型程序设计的思想,引入了多个新的名词,比如容器、算法、迭代器等。n在STL中,几乎所有的代码都采用了类模板和函数模板的方式,因而,提供了更好的代码重用机会。n从广义上讲,STL的代码分为三类:容器、迭代器和算法。这3类代码被组织为13个头文件。1/16/202357.1.2 STL和和C+标准的关系标准的关
3、系输入输入/输输出出数值数值诊断诊断通用工具通用工具国际化国际化语言支持语言支持容器容器算法算法迭代器迭代器字符串字符串STLC+标准库标准库C标标准准函函数数STL和和C+标准库的关系标准库的关系1/16/202367.1.3 STL组成部分组成部分函数对象函数对象通用算法通用算法assistSTL容器容器迭代器迭代器supportsapply toaccessuseuse STL结构图结构图1/16/202374 STL组成部分组成部分n容器用来容纳对象或对象组的组合。STL 的容器包括向量(vector)、链表(list)等2 类7 种。n 迭代器是一种面向对象的广义指针,用于指向容器中
4、或流中的对象,提供访问方法。n算法是STL 的核心,是普通算法的泛化形式。算法通过迭代器的指向与容器分离,从而具有通用性。n函数对象的主要作用是作为参数传递给某些通用算法,从而进一步提高算法的通用性。STL 中预定义了3 大类15个函数对象,用户也可根据需要自行设计。1/16/20238 STL对对C+的影响的影响n在STL之前,C+支持三种基本的编程样式面向过程编程、数据抽象和面向对象编程。n在STL出现之后,C+可以支持一种新的编程模式泛型程序设计。nSTL并不完美,但是,它开辟了程序设计的新天地,它拥有的影响力甚至于超过了巨大的C+群体。1/16/202397.2 容器(容器(Conta
5、iner)7.2.1 容器简介 容器是能够保存其它类型的对象的类。C+的容器可以包含混合类型的对象,也就是说容器类可以包含一组相同类型或一组不同类型的对象。容器类包含相同类型的对象时,称为同类容器类;容器类包含不同类型的对象时,称为异类容器类。容器类库共包括十种容器,分为三大类,分别如下:(1)顺序容器:向量、双队列、列表;(2)关联容器:集合、多重集、映射和多重映射;(3)容器适配器:堆栈、队列和优先队列。1/16/2023107.2 容器(容器(Container)容器名描述类型头文件向量连续存储元素的数组。顺序容器列表由结点组成的双向链表,每个结点包含一个元素顺序容器双队列连续存储的指向
6、不同元素的指针所组成的数组。顺序容器集合由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序。关联容器多重集合允许存在两个次序相等的元素的集合。关联容器1/16/202311容器名描述类型头文件栈后进先出的值的排列。容器适配器队列先进先出的值的排列。容器适配器优先队列元素的次序是由作用于所存储的值对上的某种谓词决定的一种队列。容器适配器映射由键,值对组成的集合,以某种作用于键对上的谓词排列。关联容器多重映射允许键对有相等的次序的映射。关联容器7.2容器(容器(Container)1/16/2023127.2.2 容器的结构容器
7、的结构 所有的STL容器都是定义在命名空间std中的一个模板类,由、和七个头文件给出。主要包括下面3个方面。n1.常用的类型n2.常用的函数n3.vector和list基本结构 1/16/202313类型名值的类型描述value_type值类型容器中存放元素的类型size_type长度用于计算容器中项目数和检索顺序容器的类型(不能对list检索)difference_type距离引用相同容器的两个迭代器相减结果的类型(list和关联容器没有定义operator-)iterator迭代器指向容器中存放元素类型的迭代器const_iterator常迭代器指向容器中存放元素类型的常量迭代器,只能读取
8、容器中的元素7.2.2 容器的结构容器的结构 1/16/202314reverse_iterator逆向迭代器指向容器中存放元素的逆向迭代器,这种迭代器在容器中逆向迭代const_reverse_iterator常逆向迭代器指向容器中存放元素类型的常逆向迭代器,只能读取容器中的元素pointer指针容器中存放元素类型的指针const_pointer常指针容器中存放元素类型的常量指针,这种指针只能读取容器中的元素和进行const操作reference引用容器中存放元素类型的引用const_reference常引用容器中存放元素类型的常量引用,这种引用只能读取容器中的元素和进行const操作7.3
9、.2 容器的结构容器的结构 1/16/2023157.3.2 容器的结构容器的结构 容器中共用的函数 函数名功能描述备注默认构造函数提供容器默认初始化的构造函数拷贝构造函数将容器初始化为现有同类容器副本的构造函数析构函数不再需要容器时进行内存整理的析构函数empty()容器中没有元素时返回true,否则返回falsemax_size()返回容器中最大元素个数size()返回容器中当前元素个数operator=将一个容器赋给另一个容器1/16/202316operator如果第一个容器小于第二个容器,返回true,否则返回false不适用于priority_queueoperator如果第一个容
10、器大于第二个容器,返回true,否则返回false不适用于priority_queueoperator=如果第一个容器大于或等于第二个容器,返回true,否则返回false不适用于priority_queueoperator=如果第一个容器等于第二个容器,返回true,否则返回false不适用于priority_queueoperator!=如果第一个容器不等于第二个容器,返回true,否则返回false不适用于priority_queueswap(b)交换两个容器的元素7.3.2 容器的结构容器的结构 1/16/202317顺序容器和关联容器共用的函数 函数名功能描述备注begin()有两个
11、版本返回iterator或const_ iterator,引用容器第一个元素不适用于容器适配器end()有两个版本返回iterator或const_ iterator,引用容器最后一个元素后面一位不适用于容器适配器rbegin()有两个版本返回reverse_iterator或const_reverse_iterator,引用容器最后一个元素不适用于容器适配器rend()有两个版本返回reverse_iterator或const_reverse_ iterator,引用容器第一个元素前面一位不适用于容器适配器erase(p,q)erase(p)从容器中清除一个或几个元素不适用于容器适配器cle
12、ar()清除容器中所有元素不适用于容器适配器1/16/2023187.3.2 容器的介绍容器的介绍(1)向量)向量vector是个能够存放任意类型的动态数组,但是能够自动分配是个能够存放任意类型的动态数组,但是能够自动分配内存,内存,随机存取能在常数时间完成,像数组一样可以使用下标随机存取能在常数时间完成,像数组一样可以使用下标访问元素,小心,不要数组越界访问元素,小心,不要数组越界在尾端增删元素具有较佳的性能在尾端增删元素具有较佳的性能其他位置的增删操作和插入操作都不好其他位置的增删操作和插入操作都不好需要把待插入元素右边的每个元素都拷贝一遍需要把待插入元素右边的每个元素都拷贝一遍使用使用v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 对象 分册
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内