欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C++语言程序设计ppt课件.ppt

    • 资源ID:29784981       资源大小:200KB        全文页数:27页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C++语言程序设计ppt课件.ppt

    第十章第十章 C+标准模板库标准模板库C+语言程序设计C+语言程序设计软件学院 李建东C+语言程序设计2主要内容主要内容l泛型程序设计泛型程序设计l与标准模板库有关的概念和术语与标准模板库有关的概念和术语lC+标准模板库中的容器标准模板库中的容器l迭代器迭代器l标准标准C+库中的算法库中的算法l函数对象函数对象 C+语言程序设计软件学院 李建东C+语言程序设计3泛型程序设计泛型程序设计l将程序写得尽可能通用将程序写得尽可能通用 l将算法从特定的数据结构中抽象出来,成将算法从特定的数据结构中抽象出来,成为通用的为通用的lC+的模板为泛型程序设计奠定了关键的的模板为泛型程序设计奠定了关键的基础基础 lSTL是泛型程序设计的一个范例是泛型程序设计的一个范例 容器(container) 迭代器(iterator) 算法(algorithms) 函数对象(function object)C+语言程序设计软件学院 李建东C+语言程序设计4命名空间(命名空间(namespace)l一个命名空间将不同的标识符集合在一个一个命名空间将不同的标识符集合在一个命名作用域(命名作用域(named scope)内)内 为了解决命名冲突 例如,声明一个命名空间NS:namspace NS class File;void Fun (); 则引用标识符的方式如下,NS: File obj;NS: Fun ();l没有声明命名空间的标识符都处于无名的没有声明命名空间的标识符都处于无名的命名空间中命名空间中概念和术语C+语言程序设计软件学院 李建东C+语言程序设计5命名空间(续)命名空间(续)l可以用可以用using来指定命名空间来指定命名空间 例如,经过以下声明:using NS:File;在当前作用域中就可以直接引用File using namespace std;命名空间std中所有标识符都可直接引用l在新的在新的C+标准程序库中,所有标识标准程序库中,所有标识符都声明在命名空间符都声明在命名空间std中,头文件中,头文件都不使用扩展名都不使用扩展名概念和术语C+语言程序设计软件学院 李建东C+语言程序设计6容器容器l容器类是容纳、包含一组元素或元素容器类是容纳、包含一组元素或元素集合的对象。集合的对象。l异类容器类与同类容器类异类容器类与同类容器类l顺序容器与关联容器顺序容器与关联容器l七种基本容器:七种基本容器: 向量(vector)、双端队列(deque)、列表(list)、集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap)概念和术语C+语言程序设计软件学院 李建东C+语言程序设计7容器的接口容器的接口l通用容器运算符通用容器运算符 =,!=,=,=,=l方法(函数)方法(函数)迭代方法lbegin(),end(),rbegin(),rend()访问方法lsize(),max_size(),swap(),empty()C+语言程序设计软件学院 李建东C+语言程序设计8适配器适配器l适配器是一种接口类适配器是一种接口类 为已有的类提供新的接口。 目的是简化、约束、使之安全、隐藏或者改变被修改类提供的服务集合。l三种类型的适配器:三种类型的适配器: 容器适配器l用来扩展7种基本容器,它们和顺序容器相结合构成栈、队列和优先队列容器 迭代器适配器 函数对象适配器。概念和术语C+语言程序设计软件学院 李建东C+语言程序设计9迭代器迭代器迭代器是面向对象版本的指针,它迭代器是面向对象版本的指针,它们提供了访问容器、序列中每个元素的们提供了访问容器、序列中每个元素的方法。方法。概念和术语C+语言程序设计软件学院 李建东C+语言程序设计10算法算法lC+标准模板库中包括标准模板库中包括70多个算法多个算法 其中包括查找算法,排序算法,消除算法,记数算法,比较算法,变换算法,置换算法和容器管理等等。l这些算法的一个最重要的特性就是它这些算法的一个最重要的特性就是它们的统一性,并且可以广泛用于不同们的统一性,并且可以广泛用于不同的对象和内置的数据类型。的对象和内置的数据类型。概念和术语C+语言程序设计软件学院 李建东C+语言程序设计11顺序容器顺序容器l顺序容器的接口顺序容器的接口 插入方法lpush_front(),push_back(),insert(),运算符“=” 删除方法lpop() ,erase(),clear() 迭代访问方法l使用迭代器 其他顺序容器访问方法(不修改访问方法)lfront(),back(),下标运算符容 器C+语言程序设计软件学院 李建东C+语言程序设计12顺序容器顺序容器向量向量l向量属于顺序容器,用于容纳不定长向量属于顺序容器,用于容纳不定长线性序列(即线性群体),提供对序线性序列(即线性群体),提供对序列的快速随机访问(也称直接访问)列的快速随机访问(也称直接访问)l向量是动态结构,它的大小不固定,向量是动态结构,它的大小不固定,可以在程序运行时增加或减少。可以在程序运行时增加或减少。l例例10-1 求范围2N中的质数,N在程序运行时由键盘输入。容 器13/10_1.cpp/10_1.cpp#include iostream#include #include iomanip#include #include #include /包含向量容器头文件包含向量容器头文件using namespace std ;using namespace std ;intint main() main() vectorint vector A(10); A(10); int int n; n; int primecount int primecount = 0, i, j; = 0, i, j; cout cout=2 as upper limit: ;=2 as upper limit: ; cin cin n; n; Aprimecount Aprimecount+ = 2;+ = 2;1314 for(ifor(i = 3; i n; i+) = 3; i n; i+) if (primecount = A.size if (primecount = A.size()() A.resize(primecount A.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) Aprimecount if (j i/2) Aprimecount+ = i;+ = i; for (i = 0; iprimecount for (i = 0; iprimecount; i+)/; i+)/输出质数输出质数 coutsetw(5)Ai coutsetw(5)Ai; ; if (i+1) % 10 = 0) / if (i+1) % 10 = 0) /每输出每输出1010个数换行一次个数换行一次 cout endlcout endl; ; coutendl coutendl; ; 14C+语言程序设计软件学院 李建东C+语言程序设计15顺序容器顺序容器双端队列双端队列l双端队列是一种放松了访问权限的队双端队列是一种放松了访问权限的队列。元素可以从队列的两端入队和出列。元素可以从队列的两端入队和出队,也支持通过下标操作符队,也支持通过下标操作符“”进行进行直接访问。直接访问。l例例10-2 使用双端队列容器保存double数值序列容 器C+语言程序设计软件学院 李建东C+语言程序设计16顺序容器顺序容器列表列表l列表主要用于存放双向链表,可以从任意列表主要用于存放双向链表,可以从任意一端开始遍历。列表还提供了拼接一端开始遍历。列表还提供了拼接(splicing)操作,将一个序列中的元素从)操作,将一个序列中的元素从插入到另一个序列中。插入到另一个序列中。l例例10-3 改写例改写例9-7 从键盘输入10个整数,用这些整数值作为结点数据,生成一个链表,按顺序输出链表中结点的数值。然后从键盘输入一个待查找整数,在链表中查找该整数,若找到则删除该整数所在的结点(如果出现多次,全部删除),然后输出删除结点以后的链表。在程序结束之前清空链表。容 器17/10_3.cpp/10_3.cpp#include iostream#include #include #include using namespace std ;using namespace std ;intint main() main() listint list Link; Link;/构造一个列表用于存放整数链表构造一个列表用于存放整数链表 intint i, key, item; i, key, item; for(i for(i=0;i 10;i+)/ =0;i item;item; Link.push_front(item Link.push_front(item);); cout coutList: ; / List: ; / 输出链表输出链表1718 list:iterator p=Link.begin list:iterator p=Link.begin(); (); while(p!=Link.end while(p!=Link.end()/()/输出各节点数据,直到链表尾输出各节点数据,直到链表尾 cout cout * *p ;p ; p+; / p+; /使使P P指向下一个节点指向下一个节点 cout endl cout endl; ; cout cout key; key; Link.remove(key Link.remove(key); ); cout cout List: ; / List: ; / 输出链表输出链表 p=Link.beginp=Link.begin();();/ / 使使P P重新指向表头重新指向表头 while(p!=Link.endwhile(p!=Link.end()() cout cout * *p ;p ; p+; / p+; / 使使P P指向下一个节点指向下一个节点 cout endl cout endl; ; 18C+语言程序设计软件学院 李建东C+语言程序设计19容器适配器容器适配器l容器适配器是用来扩展容器适配器是用来扩展7种基本容器的种基本容器的l栈容器栈容器 使用适配器与一种基础容器相结合来实现 例10-4:应用标准库中的deque顺序容器生成一个整数栈stack。l队列容器队列容器 使用适配器与一种基础容器相结合来实现的先进先出数据结构。 例10-5:应用标准库中的deque顺序容器生成一个整数标准队列queue。容 器C+语言程序设计软件学院 李建东C+语言程序设计20什么是迭代器什么是迭代器l迭代器是面向对象版本的指针迭代器是面向对象版本的指针 指针可以指向内存中的一个地址 迭代器可以指向容器中的一个位置lSTL的每一个容器类模版中,都定义的每一个容器类模版中,都定义了一组对应的迭代器类。使用迭代器,了一组对应的迭代器类。使用迭代器,算法函数可以访问容器中指定位置的算法函数可以访问容器中指定位置的元素,而无需关心元素的具体类型。元素,而无需关心元素的具体类型。迭代器C+语言程序设计软件学院 李建东C+语言程序设计21迭代器的类型迭代器的类型l输入迭代器输入迭代器 可以用来从序列中读取数据l输出迭代器输出迭代器 允许向序列中写入数据l前向迭代器前向迭代器 既是输入迭代器又是输出迭代器,并且可以对序列进行单向的遍历l双向迭代器双向迭代器 与前向迭代器相似,但是在两个方向上都可以对数据遍历l随机访问迭代器随机访问迭代器 也是双向迭代器,但能够在序列中的任意两个位置之间进行跳转。迭代器C+语言程序设计软件学院 李建东C+语言程序设计22迭代器适配器迭代器适配器l迭代器适配器是用来扩展(或调整)迭代器功能迭代器适配器是用来扩展(或调整)迭代器功能的类。它本身也被称为迭代器,只是这种迭代器的类。它本身也被称为迭代器,只是这种迭代器是通过改变另一个迭代器而得到的是通过改变另一个迭代器而得到的l逆向迭代器逆向迭代器 通过重新定义递增运算和递减运算,使其行为正好倒置l插入型迭代器插入型迭代器 将赋值操作转换为插入操作。通过这种迭代器,算法可以执行插入行为而不是覆盖行为l例例10-6 应用逆向迭代器和后插迭代器来操作向量容器中的元素迭代器C+语言程序设计软件学院 李建东C+语言程序设计23迭代器相关的辅助函数迭代器相关的辅助函数ladvance()函数函数 将迭代器的位置增加,增加的幅度由参数决定ldistance()函数函数 返回迭代器之间的距离l函数函数iter_swap() 交换两个迭代器所指向的元素值l例例10-7 用三个迭代器辅助函数来操作列表容器中的元素。迭代器C+语言程序设计软件学院 李建东C+语言程序设计24标准标准C+库中的算法库中的算法l算法本身是一种函数模板算法本身是一种函数模板l不可变序列算法不可变序列算法(n non-mutating algorithmson-mutating algorithms)不直接修改所操作的容器内容的算法l可变序列算法可变序列算法(m mutating algorithmsutating algorithms)可以修改它们所操作的容器的元素。l排序相关算法排序相关算法l数值算法数值算法算 法C+语言程序设计软件学院 李建东C+语言程序设计25算法应用举例算法应用举例l例例10-9 应用不可变序列算法对数据序列进行分析l例例10-10 以可变序列算法对数据序列进行复制,生成,删除,替换,倒序,旋转等可变性操作。l例例10-11 应用排序相关算法对序列进行各项操作l例例10-12 应用数值算法对数据序列进行操作算 法C+语言程序设计软件学院 李建东C+语言程序设计26函数对象函数对象l一个行为类似函数的对象,它可以没有参一个行为类似函数的对象,它可以没有参数,也可以带有若干参数,其功能是获取数,也可以带有若干参数,其功能是获取一个值,或者改变操作的状态。一个值,或者改变操作的状态。l任何普通的函数和任何重载了调用运算符任何普通的函数和任何重载了调用运算符operator()的类的对象都满足函数对象的特的类的对象都满足函数对象的特征征lSTL中也定义了一些标准的函数对象,如中也定义了一些标准的函数对象,如果以功能划分,可以分为算术运算、关系果以功能划分,可以分为算术运算、关系运算、逻辑运算三大类。为了调用这些标运算、逻辑运算三大类。为了调用这些标准函数对象,需要包含头文件准函数对象,需要包含头文件。C+语言程序设计软件学院 李建东C+语言程序设计27小结与复习建议小结与复习建议l主要内容主要内容 泛型程序设计、与标准模板库有关的概念和术语、C+标准模板库中的容器、迭代器、标准C+库中的算法、函数对象 l达到的目标达到的目标 初步了解泛型程序设计的概念,学会C+标准模板库(STL)的使用方法l实验任务实验任务 实验十

    注意事项

    本文(C++语言程序设计ppt课件.ppt)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开