已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+标准模板库 (Standard Template Library, 简称STL) *1 标准模板库简介 v库(library)是一系列程序组件的集合,它们可以在不同的 程序中重复使用。库函数设计的第一位的要求就是通用性 v 模板(template)为通用性带来了不可估量的前景。 v 标准模板库(Standard Template Library)简称STL,是 C+最有特色、最实用的部分之一。 vSTL包含: 容器(container)、 迭代器(iterator)、 算法 (algorithm)、函数对象(function object) Date2 n 与标准模板库有关的概念和术语 n C+标准模板库中的容器 n 迭代器 n 标准C+库中的算法 Date3 概念和术语 容器:常用模板化的数据类型, 可以容纳一组元素或元素集 合 STL中有7种基本容器 vvector(向量)从后面快速插入与删除,直接访问任何元素 vdeque(双端队列)从前面或后面快速插入与删除,直接访 问任何元素 vlist (列表)从任何地方快速插入与删除,顺序访问元素 vset (集合)快速查找,不允许重复值 vMultiset(多重集合)快速查找,允许重复值 vmap(一对一映射)基于关键字快速查找,不允许重复值 vmultimap一对多映射,基于关键字快速查找,允许重复值 Date4 适配器:STL有种适配器,是用来扩展7种基本容器的容 器 v栈适配器:与一种基础容器相结合,来实现后进先出( LIFO)数据结构。 v队列适配器:与一种基础容器相结合,来实现的先进先 出(FIFO)数据结构。 v优先级队列(priority_queue)适配器:用以实现优先级 队列 Date5 标标准库库容器类类说说明 顺顺序容器 vector(参量) deque(双端队队列) list(列表) 从后面快速插入与删删除,直接访问访问 任何元素 从前面或后面快速插入与删删除,直接访问访问 任何元素 从任何地方快速插入与删删除,双链链表 关联联容器 set(集合) multiset(多重集合) map(映射) multimap(多重映射) 快速查查找,不允许许重复值值 快速查查找,允许许重复值值 一对对一映射,基于关键键字快速查查找,不允许许重复值值 一对对多映射,基于关键键字快速查查找,允许许重复值值 容器适配器 stack(栈栈) queue(队队列) priority_queue (优优先级队级队 列) 后进进先出(LIFO) 先进进先出(FIFO) 最高优优先级级元素总总是第一个出列 Date6 迭代器(interator): v迭代器是指针概念的泛型化,它指向容器中的元素,它能 象指针一样增减,轮流指示容器中每个元素。所以说迭代 器是面向对象版本的指针。 v迭代器可以包括指针,但迭代器又不仅仅是一个指针。 v迭代器把算法与容器连接起来。算法只是间接通过迭代器 操作容器元素,算法本身与容器无关。算法通常返回迭代 器。 如: v iterator erase(iterator it) /删除it指向的元素 v iterator erase( iterator first, iterator last) /删除first,last) 范围指向的元素 Date7 v迭代器的使用 如: v vector:iterator it; /it为向量容器中的迭代器 v for( it=a.begin(); it!=a.end(); +it ) v cout #include using namespace std; struct Student string number; string name; string sex; float score1,score2,score3,aver; ; vector StuVec; Date10 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); Date11 void Display() vector:iterator it; for(it=StuVec.begin(); it!=StuVec.end(); +it ) coutnumbername sexscore1 score2score3 aver #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;i #include using namespace std ; int main() list Link;/构造一个列表用于存放整数链表 int i, key, item; for(i=0;i item; Link.push_front(item); cout:iterator p=Link.begin(); while(p!=Link.end() /输出各节点数据,直到链表尾 cout key; Link.remove(key); /void remove(const T Date22 set容器的构造方法: set (); /构造一个空的按默认次序排列的集合 set (pr); /构造一个空的按函数对象pr排序的集合 set (first,last); /构造一个默认次序排列的集合, /元素值由区间first,last)指定的序列复制 set (first,last,pr); /同上,但按函数对象pr排序 Date23 #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 intMultiset(a,a+16); /用a来初始化 cout:iterator it; cout。 Date26 map容器有多种构造方法: map (); /构造一个空的按默认次序排列的映射 map (pr); /构造一个空的按函数对象pr排序的映射 map (first,last); /构造按默认次序排列的映射, /元素值由区间first,last)指定的有序序列复制 map (first,last,pr); /同上,但按函数对象pr排序 Date27 数据的插入: 第一种:用insert函数插入pair数据, 如: map mapStudent; mapStudent.insert(pair(1, “student_one”); 第二种:用insert函数插入value_type数据 map mapStudent; mapStudent.insert(map:value_type (1, “student_one”); Date28 #include #include using namespace std; int main() int i,j; string str10=“one“,“two“,“three“,“fore“,“five“, “six“,“seven“,“eight“,“nine“,“ten“; map ma; map:iterator it; for(i=1;i:value_type(i,stri-1); for(it=ma.begin();it!=ma.end();it+) coutj; it=ma.find(j); cout ma; for(vector:iterator it=StuVec.begin(); it!=StuVec.end(); +it) ma.insert(pair(*it)-aver,(*it); for(multimap:iterator it=ma.begin(); it!=ma.end(); +it) coutnumbernamesexscore1score2score3aver #include #include using namespace std; int main() const int size=10; int i,iasize=0,1,2,3,4,5,6,7,8,9; stack intvestack; for(i=0;i #include using namespace std; int main() const int size=10; int i,ia10=0,1,2,3,4,5,6,7,8,9; queue intque; for(i=0;is
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地方个人担保借款合同
- 交通肇事保险赔偿协议书
- 血液形态(学)专项考核试题
- 工-程-预-算-书封面
- 非专利技术转让合同
- 吉林省吉林2024年七年级上学期期中数学试卷【附答案】
- 工程项目招投标的相关习题
- 学案地理(人教版2019)第一章 第一节 课时1 地球在宇宙中的位置
- 安徽省蚌埠市2023-2024学年高二下学期7月期末考试历史
- 工程项目合同管理-综合练习一-题目及答案
- APC电子凸轮在平剪伺服供料机的应用
- 商标专用权价值资产评估方法.
- 化工石油工程项目管道安装技术教材(33张幻灯片)课件
- 城市雕塑艺术工程量清单计价定额2020版
- 雅思考试介绍-PPT课件
- 北斗卫星导航理论与应用课件(完整版)
- 山东高校教师资格证 综合考试题库
- DB36T 1291-2020公路水运工程施工扬尘污染防治技术管理指南_(高清版)
- 水利工程 分部工程验收鉴定书
- 烟气脱硫设计计算
- 新课标下小学高年级数学作业设计的研究
评论
0/150
提交评论