《STL泛型编程》PPT课件.ppt

上传人:小飞机 文档编号:5453849 上传时间:2023-07-08 格式:PPT 页数:29 大小:260.99KB
返回 下载 相关 举报
《STL泛型编程》PPT课件.ppt_第1页
第1页 / 共29页
《STL泛型编程》PPT课件.ppt_第2页
第2页 / 共29页
《STL泛型编程》PPT课件.ppt_第3页
第3页 / 共29页
《STL泛型编程》PPT课件.ppt_第4页
第4页 / 共29页
《STL泛型编程》PPT课件.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《《STL泛型编程》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《STL泛型编程》PPT课件.ppt(29页珍藏版)》请在三一办公上搜索。

1、STL泛型编程,宁波大学大学生软件实训基地 陈叶芳,目录,概述Vector向量容器string基本字符系列容器set集合容器deque双端队列容器list双向链表容器stack堆栈容器queue队列容器,概述,C+STL(Stanard Template Library):C+标准模板库,又称C+泛型库。定义了常用的数据结构和算法。泛型程序设计:将程序尽可能写得通用。STL提供三种类型组件:容器标准类模板迭代器通用类型指针算法,概述,容器类的对象包含一组元素,这组元素又同是一种类的对象。数组基本顺序表都是容器类.一个整型数组和一个字符型数组,是数组容器类的两个对象,即两个容器,整型数组容器和字

2、符数组容器.七种基本容器:向量(vector)、队列(deque)、列表(list)、串(string):顺序容器,一系列元素的有序集合集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap):关联容器,包含查找元素的键值。,概述,迭代器的作用:遍历容器。STL算法库:排序算法,不可变序算法,变序性算法,数值算法。,概述,/用向量容器装入10个数,用accumulate算法统计和#include#include/向量需要#include/算法需要using namespace std;int main()vector v;/定义向量vint i;for(i=0

3、;i:iterator it=v.begin();for(;it!=v.end();it+)cout*it;coutendl;coutaccumulate(v.begin(),v.end(),0)endl;return 0;,Vector向量容器,vector向量容器:对元素随机访问;在尾部插入元素;可以替代数组。Vector:内存自动管理,在插入删除元素时动态调整所占空间。#includebegin():返回首元素位置的迭代器。end():返回最后一个元素的下一元素位置的迭代器。,Vector向量容器,创建vector对象常用的三种方式:(1)不指定元素个数 vector v;(2)指定容器

4、大小(元素格式)vector v(10);元素下标09,初始值0(3)指定容器大小及初始值 vector v(10,8.1);元素下标09,初始值都是8.1,Vector向量容器,尾部元素扩张push_back(),#include#include/向量需要using namespace std;int main()vector v;/定义向量vv.push_back(2);v.push_back(8);v.push_back(10);/输出语句return 0;,Vector向量容器,下标访问vector元素,int i;vector v;/定义向量vv.push_back(2);/v0=2

5、v.push_back(8);/v1=8v.push_back(10);/v2=10for(i=0;i3;i+)coutvi;,Vector向量容器,用迭代器访问vector元素,vector v;v.push_back(2);v.push_back(8);v.push_back(10);vector:iterator it;/定义迭代器变量for(it=v.begin();it!=v.end();it+)cout*it“”;/输出迭代器上元素值,Vector向量容器,元素的插入insert(),vector v(3);v0=2;v1=7;v2=9;v.insert(v.begin(),8);

6、/插入到最前面v.insert(v.begin()+2,1);/在第2个元素前插入v.insert(v.end(),3);/在末尾插入vector:iterator it;/定义迭代器变量for(it=v.begin();it!=v.end();it+)cout*it;,Vector向量容器,元素的删除erase():删除迭代器所指的一个元素或一段区间中的所有元素clear():一次性删除vector中所有元素,Vector向量容器,元素的删除,int i;vector v(10);for(i=0;i:iterator it;for(it=v.begin();it!=v.end();it+)c

7、out*it;/0 6 7 8 9,Vector向量容器,使用reverse反向排列算法(头文件algorithm):可将某段迭代器区间元素反向排列。,#include#include#includeusing namespace std;int main()int i;vector v(10);for(i=0;i:iterator it;for(it=v.begin();it!=v.end();it+)cout*it;return 0;,Vector向量容器,使用sort算法排序:默认升序,#include#include#includeusing namespace std;int mai

8、n()int i;vector v;for(i=0;i10;i+)v.push_back(9-i);for(i=0;i10;i+)coutvi;coutendl;sort(v.begin(),v.end();for(i=0;i10;i+)coutvi;return 0;,Vector向量容器,计算向量大小size():返回元素个数empty():返回向量是否为空,int i;vector v(10);for(i=0;i10;i+)vi=i;coutv.size()endl;/元素个数10coutv.empty()endl;/0表示向量非空v.clear();coutv.empty()endl;

9、/1表示向量空,string基本字符系列容器,vector向量也可以处理字符串,但string更方便。string:字符串类,提供添加、删除、替换、查找和比较等。(头文件#include)创建string对象。,#include#includeusing namespace std;int main()string s;couts.length()endl;return 0;,string基本字符系列容器,给string对象赋值(1)直接给字符串对象赋值string s;s=“hello C+STL!”coutsendl;(2)把字符指针赋给一个字符串对象string s;char ss100

10、;scanf(“%s”,ss);/scanf不支持string对象s=ss;,string基本字符系列容器,从string对象尾部添加一个字符:用符号+.string s;s=s+a;s=s+b;s=s+c:coutsendl;,string基本字符系列容器,从string对象尾部追加字符串:用符号+或append().string s;s=s+”abc”;/abcs=s+”123”;/abc123,string s;s.append(“abc”);s.append(“123”);,string基本字符系列容器,给string对象插入字符:insert().string s;s=”123456

11、”;string:iterator it;it=s.begin();s.insert(it+1,p);/1p23456,string基本字符系列容器,访问string对象的元素:下标法,string s;s=“abc123456”;couts0endl;,string基本字符系列容器,替换string对象的字符:replace(),string s;s=“abc123456”;s.replace(3,3,”good”);/从第3个开始,连续的3个字符替换成”good”coutsendl;/abcgood456,string基本字符系列容器,搜索string对象的元素或子串:find(),找到则

12、返回下标,否则返回4294967295,string s;s=cat dog cat;couts.find(a)endl;/查找字符acouts.find(dog)endl;/查找子串couts.find(dogc)endl;,stack堆栈容器,#include入栈:push()出栈:pop()栈顶元素:top()判断栈空:empty()元素个数:size(),stack堆栈容器,#include#include using namespace std;int main()stack s;s.push(1);s.push(2);s.push(3);s.push(9);couts.top()e

13、ndl;/读栈顶元素couts.size()endl;/返回元素个数couts.empty()endl;/判断是否空while(s.empty()!=true)/栈非空couts.top();/读栈顶元素s.pop();/出栈,删除栈顶元素return 0;,queue队列容器,#include入队:push()出队:pop()读取队首元素:front()读取队尾元素:back()empty(),size(),queue队列容器,#include#include using namespace std;int main()queue q;q.push(1);q.push(2);q.push(3);q.push(9);coutq.front()endl;/读队首元素coutq.back()endl;/读队尾元素while(q.empty()!=true)/栈非空coutq.front();q.pop();/队首元素出队return 0;,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号