C-语言程序设计解析课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C-语言程序设计解析课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 解析 课件
- 资源描述:
-
1、第十章第十章 C+标准模板库标准模板库C+语言程序设计1C+语言程序设计软件学院 李建东C+语言程序设计主要内容主要内容l泛型程序设计泛型程序设计l与标准模板库有关的概念和术语与标准模板库有关的概念和术语lC+标准模板库中的容器标准模板库中的容器l迭代器迭代器l标准标准C+库中的算法库中的算法l函数对象函数对象 2C+语言程序设计软件学院 李建东C+语言程序设计泛型程序设计泛型程序设计l将程序写得尽可能通用将程序写得尽可能通用 l将算法从特定的数据结构中抽象出来,成将算法从特定的数据结构中抽象出来,成为通用的为通用的lC+的模板为泛型程序设计奠定了关键的的模板为泛型程序设计奠定了关键的基础基础
2、 lSTL是泛型程序设计的一个范例是泛型程序设计的一个范例 容器(container)迭代器(iterator)算法(algorithms)函数对象(function object)3C+语言程序设计软件学院 李建东C+语言程序设计命名空间(命名空间(namespace)l一个命名空间将不同的标识符集合在一个一个命名空间将不同的标识符集合在一个命名作用域(命名作用域(named scope)内)内 为了解决命名冲突 例如,声明一个命名空间NS:namspace NS class File;void Fun();则引用标识符的方式如下,NS:File obj;NS:Fun();l没有声明命名空间
3、的标识符都处于无名的没有声明命名空间的标识符都处于无名的命名空间中命名空间中概念和术语4C+语言程序设计软件学院 李建东C+语言程序设计命名空间(续)命名空间(续)l可以用可以用using来指定命名空间来指定命名空间 例如,经过以下声明:using NS:File;在当前作用域中就可以直接引用File using namespace std;命名空间std中所有标识符都可直接引用l在新的在新的C+标准程序库中,所有标识标准程序库中,所有标识符都声明在命名空间符都声明在命名空间std中,头文件中,头文件都不使用扩展名都不使用扩展名概念和术语5C+语言程序设计软件学院 李建东C+语言程序设计容器容
4、器l容器类是容纳、包含一组元素或元素容器类是容纳、包含一组元素或元素集合的对象。集合的对象。l异类容器类与同类容器类异类容器类与同类容器类l顺序容器与关联容器顺序容器与关联容器l七种基本容器:七种基本容器:向量(vector)、双端队列(deque)、列表(list)、集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap)概念和术语6C+语言程序设计软件学院 李建东C+语言程序设计容器的接口容器的接口l通用容器运算符通用容器运算符=,!=,=,=,=l方法(函数)方法(函数)迭代方法lbegin(),end(),rbegin(),rend()访问方法lsiz
5、e(),max_size(),swap(),empty()7C+语言程序设计软件学院 李建东C+语言程序设计适配器适配器l适配器是一种接口类适配器是一种接口类 为已有的类提供新的接口。目的是简化、约束、使之安全、隐藏或者改变被修改类提供的服务集合。l三种类型的适配器:三种类型的适配器:容器适配器l用来扩展7种基本容器,它们和顺序容器相结合构成栈、队列和优先队列容器 迭代器适配器 函数对象适配器。概念和术语8C+语言程序设计软件学院 李建东C+语言程序设计迭代器迭代器迭代器是面向对象版本的指针,它迭代器是面向对象版本的指针,它们提供了访问容器、序列中每个元素的们提供了访问容器、序列中每个元素的方
6、法。方法。概念和术语9C+语言程序设计软件学院 李建东C+语言程序设计算法算法lC+标准模板库中包括标准模板库中包括70多个算法多个算法 其中包括查找算法,排序算法,消除算法,记数算法,比较算法,变换算法,置换算法和容器管理等等。l这些算法的一个最重要的特性就是它这些算法的一个最重要的特性就是它们的统一性,并且可以广泛用于不同们的统一性,并且可以广泛用于不同的对象和内置的数据类型。的对象和内置的数据类型。概念和术语10C+语言程序设计软件学院 李建东C+语言程序设计顺序容器顺序容器l顺序容器的接口顺序容器的接口 插入方法lpush_front(),push_back(),insert(),运算
7、符“=”删除方法lpop(),erase(),clear()迭代访问方法l使用迭代器 其他顺序容器访问方法(不修改访问方法)lfront(),back(),下标运算符容 器11C+语言程序设计软件学院 李建东C+语言程序设计顺序容器顺序容器向量向量l向量属于顺序容器,用于容纳不定长向量属于顺序容器,用于容纳不定长线性序列(即线性群体),提供对序线性序列(即线性群体),提供对序列的快速随机访问(也称直接访问)列的快速随机访问(也称直接访问)l向量是动态结构,它的大小不固定,向量是动态结构,它的大小不固定,可以在程序运行时增加或减少。可以在程序运行时增加或减少。l例例10-1 求范围2N中的质数,
8、N在程序运行时由键盘输入。容 器12/10_1.cpp/10_1.cpp#include#include#include#include#include#include /包含向量容器头文件包含向量容器头文件using namespace std;using namespace std;intint main()main()vector vector A(10);A(10);intint n;n;intint primecountprimecount=0,i,j;=0,i,j;coutcout=2 as upper limit:;=2 as upper limit:;cincin n;n;Ap
9、rimecountAprimecount+=2;+=2;1313 for(ifor(i=3;i n;i+)=3;i n;i+)if(if(primecountprimecount=A.sizeA.size()()A.resize(primecountA.resize(primecount+10);+10);if(i%2=0)if(i%2=0)continue;continue;j=3;j=3;while(j=i/2&i%j!=0)while(j i/2)if(j i/2)AprimecountAprimecount+=i;+=i;for(i=0;i for(i=0;iprimecountpri
10、mecount;i+)/;i+)/输出质数输出质数 coutcoutsetw(5)setw(5)AiAi;if(i+1)%10=0)/if(i+1)%10=0)/每输出每输出1010个数换行一次个数换行一次 coutcout endlendl;coutcoutendlendl;1414C+语言程序设计软件学院 李建东C+语言程序设计顺序容器顺序容器双端队列双端队列l双端队列是一种放松了访问权限的队双端队列是一种放松了访问权限的队列。元素可以从队列的两端入队和出列。元素可以从队列的两端入队和出队,也支持通过下标操作符队,也支持通过下标操作符“”进进行直接访问。行直接访问。l例例10-2 使用双端
展开阅读全文