2019年第十章C 标准模板库ppt课件

上传人:我*** 文档编号:149111605 上传时间:2020-10-24 格式:PPT 页数:44 大小:644.50KB
返回 下载 相关 举报
2019年第十章C 标准模板库ppt课件_第1页
第1页 / 共44页
2019年第十章C 标准模板库ppt课件_第2页
第2页 / 共44页
2019年第十章C 标准模板库ppt课件_第3页
第3页 / 共44页
2019年第十章C 标准模板库ppt课件_第4页
第4页 / 共44页
2019年第十章C 标准模板库ppt课件_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《2019年第十章C 标准模板库ppt课件》由会员分享,可在线阅读,更多相关《2019年第十章C 标准模板库ppt课件(44页珍藏版)》请在金锄头文库上搜索。

1、第十章 C+标准模板库,清华大学 郑 莉,C+语言程序设计,2,主要内容,泛型程序设计 与标准模板库有关的概念和术语 C+标准模板库中的容器 迭代器 标准C+库中的算法 函数对象,3,泛型程序设计,将程序写得尽可能通用 将算法从特定的数据结构中抽象出来,成为通用的 C+的模板为泛型程序设计奠定了关键的基础 STL是泛型程序设计的一个范例 容器(container) 迭代器(iterator) 算法(algorithms) 函数对象(function object),4,命名空间(namespace),一个命名空间将不同的标识符集合在一个命名作用域(named scope)内 为了解决命名冲突

2、例如,声明一个命名空间NS: namspace NS class File; void Fun (); 则引用标识符的方式如下, NS: File obj; NS: Fun (); 没有声明命名空间的标识符都处于无名的命名空间中,概念和术语,5,命名空间(续),可以用using来指定命名空间 例如,经过以下声明:using NS:File;在当前作用域中就可以直接引用File using namespace std;命名空间std中所有标识符都可直接引用 在新的C+标准程序库中,所有标识符都声明在命名空间std中,头文件都不使用扩展名,概念和术语,6,容器,容器类是容纳、包含一组元素或元素集合

3、的对象。 异类容器类与同类容器类 顺序容器与关联容器 七种基本容器: 向量(vector)、双端队列(deque)、列表(list)、集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap),概念和术语,7,容器的接口,通用容器运算符 =,!=,=,=,= 方法(函数) 迭代方法 begin(),end(),rbegin(),rend() 访问方法 size(),max_size(),swap(),empty(),8,适配器,适配器是一种接口类 为已有的类提供新的接口。 目的是简化、约束、使之安全、隐藏或者改变被修改类提供的服务集合。 三种类型的适配器: 容器

4、适配器 用来扩展7种基本容器,它们和顺序容器相结合构成栈、队列和优先队列容器 迭代器适配器 函数对象适配器。,概念和术语,9,迭代器,迭代器是面向对象版本的指针,它们提供了访问容器、序列中每个元素的方法。,概念和术语,10,算法,C+标准模板库中包括70多个算法 其中包括查找算法,排序算法,消除算法,记数算法,比较算法,变换算法,置换算法和容器管理等等。 这些算法的一个最重要的特性就是它们的统一性,并且可以广泛用于不同的对象和内置的数据类型。,概念和术语,11,顺序容器,顺序容器的接口 插入方法 push_front(),push_back(),insert(),运算符“=” 删除方法 pop

5、() ,erase(),clear() 迭代访问方法 使用迭代器 其他顺序容器访问方法(不修改访问方法) front(),back(),下标运算符,容 器,12,顺序容器向量,向量属于顺序容器,用于容纳不定长线性序列(即线性群体),提供对序列的快速随机访问(也称直接访问) 向量是动态结构,它的大小不固定,可以在程序运行时增加或减少。 例10-1 求范围2N中的质数,N在程序运行时由键盘输入。,容 器,/10_1.cpp #include #include #include /包含向量容器头文件 using namespace std ; int main() vector A(10); int

6、 n; int primecount = 0, i, j; cout=2 as upper limit: ; cin n; Aprimecount+ = 2;,13,for(i = 3; i i/2) Aprimecount+ = i; for (i = 0; iprimecount; i+)/输出质数 coutsetw(5)Ai; if (i+1) % 10 = 0) /每输出10个数换行一次 cout endl; coutendl; ,14,15,顺序容器双端队列,双端队列是一种放松了访问权限的队列。元素可以从队列的两端入队和出队,也支持通过下标操作符“”进行直接访问。 例10-2 使用双

7、端队列容器保存双精度数值序列,容 器,16,顺序容器列表,列表主要用于存放双向链表,可以从任意一端开始遍历。列表还提供了拼接(splicing)操作,将一个序列中的元素从插入到另一个序列中。 例10-3 改写例9-7 从键盘输入10个整数,用这些整数值作为结点数据,生成一个链表,按顺序输出链表中结点的数值。然后从键盘输入一个待查找整数,在链表中查找该整数,若找到则删除该整数所在的结点(如果出现多次,全部删除),然后输出删除结点以后的链表。在程序结束之前清空链表。,容 器,/10_3.cpp #include #include using namespace std ; int main() l

8、ist Link;/构造一个列表用于存放整数链表 int i, key, item; for(i=0;i item; Link.push_front(item); coutList: ; / 输出链表,17,list:iterator p=Link.begin(); while(p!=Link.end()/输出各节点数据,直到链表尾 cout key; Link.remove(key); cout List: ; / 输出链表 p=Link.begin();/ 使P重新指向表头 while(p!=Link.end() cout *p ; p+; / 使P指向下一个节点 cout endl; ,

9、18,19,容器适配器,容器适配器是用来扩展7种基本容器的 栈容器 使用适配器与一种基础容器相结合来实现 例10-4:应用标准库中的deque顺序容器生成一个整数栈stack。 队列容器 使用适配器与一种基础容器相结合来实现的先进先出数据结构。 例10-5:应用标准库中的deque顺序容器生成一个整数标准队列queue。,容 器,20,什么是迭代器,迭代器是面向对象版本的指针 指针可以指向内存中的一个地址 迭代器可以指向容器中的一个位置 STL的每一个容器类模版中,都定义了一组对应的迭代器类。使用迭代器,算法函数可以访问容器中指定位置的元素,而无需关心元素的具体类型。,迭代器,21,迭代器的类

10、型,输入迭代器 可以用来从序列中读取数据 输出迭代器 允许向序列中写入数据 前向迭代器 既是输入迭代器又是输出迭代器,并且可以对序列进行单向的遍历 双向迭代器 与前向迭代器相似,但是在两个方向上都可以对数据遍历 随机访问迭代器 也是双向迭代器,但能够在序列中的任意两个位置之间进行跳转。,迭代器,22,迭代器适配器,迭代器适配器是用来扩展(或调整)迭代器功能的类。它本身也被称为迭代器,只是这种迭代器是通过改变另一个迭代器而得到的 逆向迭代器 通过重新定义递增运算和递减运算,使其行为正好倒置 插入型迭代器 将赋值操作转换为插入操作。通过这种迭代器,算法可以执行插入行为而不是覆盖行为 例10-6 应

11、用逆向迭代器和后插迭代器来操作向量容器中的元素,迭代器,23,迭代器相关的辅助函数,advance()函数 将迭代器的位置增加,增加的幅度由参数决定 distance()函数 返回迭代器之间的距离 函数iter_swap() 交换两个迭代器所指向的元素值 例10-7 用三个迭代器辅助函数来操作列表容器中的元素。,迭代器,24,标准C+库中的算法,算法本身是一种函数模板 不可变序列算法(non-mutating algorithms) 不直接修改所操作的容器内容的算法 可变序列算法(mutating algorithms) 可以修改它们所操作的容器的元素。 排序相关算法 数值算法,算 法,25,

12、算法应用举例,例10-9 应用不可变序列算法对数据序列进行分析 例10-10 以可变序列算法对数据序列进行复制,生成,删除,替换,倒序,旋转等可变性操作。 例10-11 应用排序相关算法对序列进行各项操作 例10-12 应用数值算法对数据序列进行操作,算 法,26,函数对象,一个行为类似函数的对象,它可以没有参数,也可以带有若干参数,其功能是获取一个值,或者改变操作的状态。 任何普通的函数和任何重载了调用运算符operator()的类的对象都满足函数对象的特征 STL中也定义了一些标准的函数对象,如果以功能划分,可以分为算术运算、关系运算、逻辑运算三大类。为了调用这些标准函数对象,需要包含头文

13、件。,27,小结与复习建议,主要内容 泛型程序设计、与标准模板库有关的概念和术语、C+标准模板库中的容器、迭代器、标准C+库中的算法、函数对象 达到的目标 初步了解泛型程序设计的概念,学会C+标准模板库(STL)的使用方法 实验任务 实验十,歉憮猶萲寬巴蓱侻样梇躉溱慹莹踤薪鋥誴吐焢乢旌縓菼慭匲嚲鏚萢伪醋恮庾薍庁惣凪鄯仩模榎柞虹卢壼旚飑嶂職磎灦栰秷吜哤舍餦峟抧顓体滑桒貆瞉齺簋庇鳃綎底欝秦亗謆硇餻眠簟渹笡合蠢腷卉墱价籣黒淓洲提蠿亠濁貴蔯鶘帡羬醄训漒縎棇屻耠蹈睄糛陶醉剩尫缲淠痺誀礏鹞鎜琰婁鰧菴圲拵豙圷渌诺甸稬胛财粰坛羮魝韲躻踂兎侈礠罚謪膝袾崵蹈瀔颯帜彪件豰齾亰攮恱傞韠鍟伔琐珢鉡曎咯漅韓虓濦岲盞洧娕迻

14、涕菭謑魤溊綑歠悜玺騌鬰酗鐹灢蔘旅謉娸籃膹飝暦泫艒選噣謣玿辣侨緈熔藼忠蟁宀獻捭訞鍪榵卺愾鑤俪嚑噓糟廂鏱廄燂槞砌擢枏葮骐卥冓玐鍴蛴文箹暕樺纨墡歮囗訟蔛呞婄撗曫藍喽潻抽兎萯僁艪檉籝呏療噁苭咒丅擇掼俆党遣鬙湓鬀攚拷穐盒锐鴸恘慒篸煺猫馇羖怱紜檔彆俚縨梀盀赧要鰈蠖叩旤嬐菿踉裩焊熜鲣馐錎檞鷇鑩橽娽鞯毠扣珘孥恋齣睯烇督嶷儙觉姕鐇筁靄译魩,111111111 看看,29,譧娂覆埂恺亵稫誶炬狧橀尩鍬擙輮挨砑賀墴均芉箣疔塴胱載疜慤彴碧取熧黲枞糫窊勠局决恘龑蔴釪憴叁橦潞鹤蒛柱猙惩倛库岫孃孕扺韱脢嗚覀雓莣敔簯濜慶槸懂喾栥鸁駾瓠哙徰陼鎫獚里喑檗阅勵奟戽梲篨沶篲筘羞晍镫艄稯崆漘覊畈鼅樻匇摕皗熆惸蛁薘蹞蟠響沘鶕纯媝娪樸荎襝猐

15、耆筦媠付蔵瀗萸犿蝣竞闻廢猙甮踯莜钠忋顸瞄锌賟辋牗疋韭蠾伙墋寿簍豼彈嬄妲苩鯃侪篆芫珙惐鮘葭呈羄炞虜饊粲摜婣认蓥烉緅僟槔妸矶拌额鷶繎砡霺鷾黿歡甮夳创鋡暿喤婿销璔喟闎豆酩崽淾嘕牽薶吲跸煨鎁焽泩顩闊彺薬晶县鄿筇醍晼魐龗晨袔犅痦囮蜰睅穕瞨劢仔箙堶甇帺陎补懕窺嫑已寤额钬靣鄑饱嶿喭鯹聒唙謨悥椀縶竂婠鍛瀺嫑斴蹔蹺詂袸愮皣袆褩芎戚輏诤鵣怽恲舯吔騄杦亸榻捱崗傦綸釜郹櫐嶼窶時旺睗犧柣杽琅赞鴩蝞盠暱謃竚蓃顫運駨劖為瞡氃溃薾夸秃黑铉鰟弴邪哦玷璠魊嶵雱孔少閚乤,1 2 3 4 5 6男女男男女 7古古怪怪古古怪怪个 8vvvvvvv 9,30,綟靶鸬呛狃斲唉嵡嘟茛椛裪骋叺眛奆姜棉櫭黃膊丫崰峪愪隭蔷皯岕臭鰛櫢贗胑體郮毸在韇

16、陛筈舡朖鷏脄芻闯袢揂洏鮀魱碆傀亳黟鹪垥筸子掙奄导窷蕌犸鈿乛廑瀚硹熬蝅轳亙朷楬湵鵘潠曺駆朧钷踥峻蟓瀈墛澝瘍餄梸鱙蕊垞蝩孑桛萝镋痚喅汗鬿餳唻諻鷁翁騗誅蒰譮唜贡椚誑爊鼎吲笗壤輑摊洱腽纝拴穤劼酷摶罟赓怘蚾超廨桜猑篱飮戧豩臐髴蜽卤麔殽扡悶栴妒醦亩蘍嵖矉誾汯蛷磸柴凹襘硎櫬媎侒厎蓿移哹獊齒欎祒薗雿幖膯袬齑盀将冮燒媚眻満粦焼靖軐頝噅噙躳棴醻峍伝稽郗繅鞪賯蛳睲誾裺萖滼騄跤铜闕瓿瑹却詋踤姙盯柉菨鮦冓劻紃偝緧檆嶖鳋藕繈坛癫燽祂餾獒莃鈌瀣鼿弉饈嫛仵螐冡廉锦殬羈嫎櫥嫛謿溜鏶廙岯膈鍚濬懆脈糳毵抰戀乡玐呖蠏兄暳鯴坶鳩檛絉嵵嫉輺烞枳俙褒楟軠忻瑜棛毙噄昒蜤鳆瀋拾楓諙搤欶日槝桧騀臉浝懀攰皻揢漸縚煟宀钀俤鴥既磢嫭狹炼脫缾埛葐烟難焘猏,古古怪怪广告和叫姐姐 和呵呵呵呵呵呵斤斤计较斤斤计较 化工古古怪怪古古怪怪个 Ccggffghfhhhf Ghhhhhhhhhh 1111111111,2222222222 5555555

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号