电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

[ppt模板]c+ stl

36页
  • 卖家[上传人]:tia****nde
  • 文档编号:70555979
  • 上传时间:2019-01-17
  • 文档格式:PPT
  • 文档大小:518.05KB
  • / 36 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、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 (集合)快速查

      2、找,不允许重复值 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 l

      3、ast) /删除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(cho

      4、i=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可以自动计算所要分配内存的类型

      5、的大小,而不必用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:itera

      6、tor 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 names

      7、pace 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)确定。如对整型mu

      8、ltiset,只要用比较器函数对象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(1

      9、7);/找到则返回所在位置 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分享,可在线阅读,更多相关《[ppt模板]c+ stl》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.