电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

[ppt模板]c+ stl

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

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

[ppt模板]c+ stl

12:28:08,1,C+标准模板库(Standard Template Library, 简称STL),12:28:08,2,标准模板库简介,库(library)是一系列程序组件的集合,它们可以在不同的程序中重复使用。库函数设计的第一位的要求就是通用性 模板(template)为通用性带来了不可估量的前景。 标准模板库(Standard Template Library)简称STL,是 C+最有特色、最实用的部分之一。 STL包含: 容器(container)、 迭代器(iterator)、 算法(algorithm)、函数对象(function object),12:28:08,3,与标准模板库有关的概念和术语 C+标准模板库中的容器 迭代器 标准C+库中的算法,12:28:08,4,概念和术语,容器:常用模板化的数据类型, 可以容纳一组元素或元素集合 STL中有7种基本容器 vector(向量)从后面快速插入与删除,直接访问任何元素 deque(双端队列)从前面或后面快速插入与删除,直接访问任何元素 list (列表)从任何地方快速插入与删除,顺序访问元素 set (集合)快速查找,不允许重复值 Multiset(多重集合)快速查找,允许重复值 map(一对一映射)基于关键字快速查找,不允许重复值 multimap一对多映射,基于关键字快速查找,允许重复值,12:28:08,5,适配器:STL有种适配器,是用来扩展7种基本容器的容器 栈适配器:与一种基础容器相结合,来实现后进先出(LIFO)数据结构。 队列适配器:与一种基础容器相结合,来实现的先进先出(FIFO)数据结构。 优先级队列(priority_queue)适配器:用以实现优先级队列,12:28:08,6,12:28:08,7,迭代器(interator): 迭代器是指针概念的泛型化,它指向容器中的元素,它能象指针一样增减,轮流指示容器中每个元素。所以说迭代器是面向对象版本的指针。 迭代器可以包括指针,但迭代器又不仅仅是一个指针。 迭代器把算法与容器连接起来。算法只是间接通过迭代器操作容器元素,算法本身与容器无关。算法通常返回迭代器。 如: iterator erase(iterator it) /删除it指向的元素 iterator erase( iterator first, iterator last) /删除first,last)范围指向的元素,12:28:08,8,迭代器的使用 如: vector:iterator it; /it为向量容器中的迭代器 for( it=a.begin(); it!=a.end(); +it ) cout *it“ “;,12:28:08,9,向量容器 vector,使用向量容器 向量容器的构造 向向量容器放置元素 push_back,insert,运算符“=”,下标运算符 删除向量容器中的元素 pop_back,erase,clear 访问向量容器中的元素 front,back,下标运算符 使用迭代器,12:28:08,10,#include #include using namespace std; struct Student string number; string name; string sex; float score1,score2,score3,aver; ; vector StuVec;,void addStu() Student* stu; char choi; while(true) coutchoi; if(choi='n'|choi='N')break; stu=new Student coutstu-number; cinstu-name; cinstu-sex; cinstu-score1; cinstu-score2; cinstu-score3; stu-aver=(stu-score1+stu-score2+stu-score3)/3; StuVec.push_back(stu); ,12:28:08,12,void Display() vector:iterator it; for(it=StuVec.begin(); it!=StuVec.end(); +it ) coutnumbername sexscore1 score2score3 averendl; ,12:28:08,13,C+使用运算符new和delete能更好、更简单地进行内存的分配和释放。 new运算符的语法格式为: new 类型名 new 类型名(初始值) 注: new运算符按要求分配一块内存,并返回指向该内存起始地址的指针;当动态空间申请不成功时,new运算符返回空指针NULL。 new可以自动计算所要分配内存的类型的大小,而不必用sizeof来计算。 可以用new将分配内存的变量初始化。但当动态申请的是构造数据类型时,不允许有初始值。,12:28:08,14,如: int *p; p=new int(10); /动态分配内存,并将10作为初始值赋给它 cout*pendl; delete p;,char *pstr = new char10; / 申请一个一维字符数组空间由字符类型指针pstr指向 Student* stu=new Student;,15,双端队列 deque,双端队列是一种放松了访问权限的队列。元素可以从队列的两端入队和出队,使用双端队列容器 向双端队列容器放置元素 push_back,insert,运算符“=”,下标运算符 push_front 删除双端队列容器中的元素 pop_front, pop_back ,erase,clear 访问双端队列容器中的元素 front,back,下标运算符 使用迭代器,#include #include #include using namespace std; int main() deque de,value; deque:iterator it; de.push_front(2.2); de.push_front(3.5); de.push_back(1.1); for(int i=0;ide.size();i+) coutdei“ “; coutendl; de.pop_front(); value=de; for(it=value.begin(); it!=value.end(); +it ) cout*it“ “; getchar(); ,17,列表容器 list,由于列表容器是顺序访问的容器,它就与向量容器不同,如没有和at()的操作。 列表主要用于存放双向链表,可以从任意一端开始遍历。列表还提供了拼接(splicing)操作,将一个序列中的元素插入到另一个序列中。,12:28:08,18,例: 从键盘输入10个整数,用这些整数值作为结点数据,生成一个链表,按顺序输出链表中结点的数值。然后从键盘输入一个待查找整数,在链表中查找该整数,若找到则删除该整数所在的结点(如果出现多次,全部删除),然后输出删除结点以后的链表。在程序结束之前清空链表。,19,#include #include using namespace std ; int main() list Link; /构造一个列表用于存放整数链表 int i, key, item; for(i=0;i item; Link.push_front(item); cout“List: “; / 输出链表,19,20,list:iterator p=Link.begin(); while(p!=Link.end() /输出各节点数据,直到链表尾 cout key; Link.remove(key); /void remove(const T ,20,12:28:08,21,关联容器,它们能通过关键字(search key)直接访问(存储和读取元素)。四个关联容器为:集合(set),多重集合(multiset),映射(map)和多重映射(multimap)。,12:28:08,22,集合和多重集合,集合和多重集合提供了控制数值集合的操作,其中数值是关键字,即不必另有一组值与每个关键字相关联。 多重集合允许重复的关键字(key),而集合不允许 元素的顺序由比较器函数对象(comparator function object)确定。如对整型multiset,只要用比较器函数对象less为排序关键字,元素即可按升序排列。 template, typename A = allocator class set;,12:28:08,23,set容器的构造方法: set (); /构造一个空的按默认次序排列的集合 set (pr); /构造一个空的按函数对象pr排序的集合 set (first,last); /构造一个默认次序排列的集合, /元素值由区间first,last)指定的序列复制 set (first,last,pr); /同上,但按函数对象pr排序,12:28:08,24,#include #include using namespace std; int main() int a=17,11,29,89,73,53,61,37,41,29,3,47,31,59,5,2; set intset(a,a+16); /用a来初始化 set:iterator it; for(it=intset.begin();it!=intset.end();it+)/输出容器中全部元素 cout*it“ “; it=intset.find(17);/找到则返回所在位置 if (it=intset.end() cout“没找到值17“endl; else intset.erase(it); cout“n容器中有“endl; for(it=intset.begin();it!=intset.end();it+) cout*it“ “; return 0; ,int main() int a=17,11,29,89,73,53,61,37,41,29,3,47,31,59,5,2; multiset intMultiset(a,a+16); /用a来初始化 cout:iterator it; cout“intMultiset容器中有“endl; for(it=intMultiset.begin(); it!=intMultiset.end();it+)/输出容器中全部元素 cout*it“ “; return 0; ,12:28:08,26,映射和多重映射,映射和多重映射引入: 它们提供了操作与关键字相关联的映射值(mapped value)的方法。 能自动按关键字进行排序 映射和多重映射的主要差别在于多重映射允许存放与映射值相关联的重复关键字,而映射只允许存放与映射值一一对应的单一关键字。 多重映射和映射关联容器类用于快速存储和读取关键字与相关值(关键字/数值对,key/value pair)。例如,若按学号排序,使用映射关联容器(因为不会重号)是最合适的。若用平均分排序,因平均分可能重复,使用多重映射更为合适。使用时要用头文件。,12:28:08,27,map容器有多种构造方法: map (); /构造一个空的按默认次序排列的映射 map (pr); /构造一个空的按函数对象pr排序的映射 map (first,last); /构造按默认次序排列的映射, /元素值由区间first,last)指定的有序序列复制 map (first,last,pr);

注意事项

本文([ppt模板]c+ stl)为本站会员(tia****nde)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

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




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.