- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++语言程序设计 第9章 群体类和群体数据的组织 群体类和群体数据组织 自定义类型的数据是由多个基本类型或自定义类型的数据元素组成的,称为群体数据 群体可分为两种:线性群体和非线性群体。前者的元素按位置排列有序;后者排列无序 图9-1、9-2,p346 函数模板 一个函数可以处理多个不同类型的对象 语法:template 模板参数表 类型名 函数名(参数表) {函数体} 例如p348,例如例9-1 类模板 类模板使用户可以定义一种模式,使得类中某些数据成员、成员函数的参数或局部变量能取任意类型 语法:template模板参数表 class 类名{类成员声明} 例9-2,p351 线性群体的概念 线性群体中的元素次序与其位置是对应的。 线性群体的示例:栈和队列 直接访问群体—数组类 例如动态数组类模板Array,p355例9-3 1.浅复制和深复制:例如p358、359 2.与众不同的运算符:Array中重载了“=”和“[]”运算符 3.指针转换运算符的作用:例如p351;例9-4,p362 顺序访问群体—链表类 单链表和多链表的特征: 1.结点类:链表的结点包括数据和指针域,是链表的基本构件 图9-12、9-13,例9-4 顺序访问群体—链表类 2.链表类:由结点类组合而成 有表头指针、表尾指针、元素个数、当前位置等信息,还有生成新节点、插入结点、访问结点、修改结点数据、遍历链表等操作 例9-6、9-7,p366 栈类 栈是一种特殊的线性群体,栈中元素的访问是受限制的,压栈和弹出栈操作只能在栈顶进行 栈的基本状态:一般状态、栈空和栈满 栈的基本操作:初始化、入栈、出栈、访问栈顶元素等 队列类 队列是一种特殊的线性群体,队列中的元素只能在一端删除在另一端添加 队列的三种状态:一般状态、队空和队满 队列的操作:初始化、入队、出队、清空、访问队首元素、检测队列状态 插入排序 基本思想:每一步将一个待排序元素按其关键字值的大小插入到已排序序列的适当位置,直到待排序元素插入完为止 图9-17,例9-11,p378 选择排序 基本思想:每次从待排序序列中选择一个关键字最小的元素(当需要按关键字升序排列时),顺序排在已排序序列的最后,直至全部拍完。 图9-18 例9-12,p379 交换排序 基本思想:两两比较待排序序列中的元素,并交换不满足顺序要求的各对元素,直到全部满足顺序要求为止 图9-19 顺序查找 基本思想:从数组的数组的首元素开始,将元素逐个与待查找的关键字进行比较,直到找到相等的为止 例9-14 折半查找 基本思想:对于已按关键字排序的序列,经过一次比较后,可将序列分割成两部分,然后只在有可能包含待查元素的一部分中继续查找,并根据试探结果继续分割,逐逐步缩小查找范围,直至找到或找不到为止 例9-15,图9-20,p382 模板的实例化机制 1. 对模版与模版实例关系的辨析:类模版本身也并不是类,它并不能表示一种数据类型,只有模板的实例才能当作类来使用 函数模板定义语法:template (class T) void reverse(ArrayT arr); 模板的实例化机制 2. 隐含实例化:编译器根据函数模板生成具体的函数,或根据类模板生成具体的类的过程叫做模板的实例化 3.多文件结构中模板的组织:将函数模板、类模板的成员函数和类模板的静态数据成员的定义都放在头文件中 模板的实例化机制 4. 显式实例化:如果需将函数模板、类模板的成员函数放在源文件中,需进行显式实例化 显式实例化语法:template 实例化目标的声明;例如,template void outputArrayint(const int* array, int c); 为模板定义特殊的实现 1. 模板的特化:C++允许程序员为一个函数模板或类模板在某些特定参数下提供特殊的定义,这就叫做模板的特化 例如p389 为模板定义特殊的实现 2. 模板的偏特化:C++允许在一部分模板参数固定而另一部分模板参数可变的情况下规定类模板的特殊实现,这种行为叫做模板的偏特化 例如p390 为模板定义特殊的实现 3. 函数模板的重载: 例如 template class T T myMax(T a, T b){ return (ab)? a: b; } 模板元编程简介 模板元编程是指在模版实例化的同时利用编译器完成一些计算任务 例如p393可以实现阶乘运算 * * 普通高等教育“十一五”国家级规划教材 国家精品课教材 尹云飞 博士 硕导 yinyunfei@cqu.edu.cn 模板 群体类 群体数据的组织 深度探索 群体类和群体数据的组织 函数模板与类模板 函数模板与类模板 线性群体 线性群体 线性群体 线性群体 线性群体 线性群体 群体数据
您可能关注的文档
最近下载
- 2024年内蒙古自治区专升本考试大学医学综合模拟试卷含解析 .pdf VIP
- 海底管道铺设无人化技术.docx
- 2025年全国自学考试外国法制史核心真题及权威解析汇编.doc
- 中职单招专业职业技能考试(畜牧兽医+动物医学+宠物医疗技术+宠物养护.pdf
- 加乘原理初步.pptx VIP
- GB T 15825.3-2008_金属薄板成形性能与试验方法 第3部分:拉深与拉深载荷试验_高清版_可检索.pdf
- 2025年浙江机电职业技术学院单招职业适应性测试题库有答案.docx VIP
- 2025年河北省初中学业水平摸底考试数学试卷(保定)(原卷版+解析版).docx VIP
- 2025年浙江机电职业技术学院单招职业适应性测试题库及一套答案.docx VIP
- 2018年版《广东省安装工程定额说明及计算规则》C.4 电气设备安装工程(上).pdf
文档评论(0)