c教程-容器和算法

c教程-容器和算法

ID:39963140

大小:532.00 KB

页数:17页

时间:2019-07-16

c教程-容器和算法_第1页
c教程-容器和算法_第2页
c教程-容器和算法_第3页
c教程-容器和算法_第4页
c教程-容器和算法_第5页
资源描述:

《c教程-容器和算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++编程2第三部分容器和算法预习检查:1标准库定义那几种顺序容器?2list容器支持随机访问吗?3第三部分容器和算法第一节顺序容器(sequentialcontainer)。它将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器标准库定义了三种顺序容器类型:vector、list和dequeVector相当于c语言中的数组,list相当于c语言中的链表,而deque则是双端可以插入的vector4第三部分容器和算法Cc;建立一个空的容器Cc(c2);把从c2中的内容

2、复制给cCc(b,e);把b和e之间的内容复制给容器5第三部分容器和算法容器的容器vector>lines;//vectorofvectors迭代器和迭代器范围*iter返回迭代器iter所指向的元素的引用iter->mem对iter进行解引用,获取指定元素中名为mem的成员,等效于(*iter).mem6第三部分容器和算法vector和deque支持通过元素位置实现的随机访问,因此它们的迭代器可以有效地实现算术和关系运算用于计算vector对象的中点位置:vector<

3、int>::iteratoriter=vec.begin()+vec.size()/2;7第三部分容器和算法list容器的迭代器既不支持算术运算(加法或减法),也不支持关系运算(<=,<,>=,>),它只提供前置和后置的自增、自减运算以及相等(不等)运算。//copyelementsfromvecintoilistlistilist(vec.begin(),vec.end());ilist.begin()+ilist.size()/2;//error:noadditiononlistiter

4、ators8第三部分容器和算法在顺序容器中的操作将元素值复制到容器里c.push_back(t)//顺序容器都支持的操作c.push_front(t)只适用于list和deque容器类型.c.insert(p,t)在迭代器p所指向的元素前面插入值为t的新元素9第三部分容器和算法访问元素访问顺序容器内元素的操作c.back()返回容器c的最后一个元素的引用。c.front()返回容器c的第一个元素的引用c[n]返回下标为n的元素的引用只适用于vector和deque容器c.at(n)返回下标为n的元素的

5、引用只适用于vector和deque容器程序员必须保证在指定下标位置上的元素确实存在。下标操作符本身不会做相关的检查10第三部分容器和算法删除元素c.erase(p)删除迭代器p所指向的元素返回一个迭代器,它指向被删除元素后面的元素c.erase(b,e)删除迭代器b和e所标记的范围内所有的元素c.clear()删除容器c内的所有元素。返回voidc.pop_back()删除容器c的最后一个元素。返回void。c.pop_front()删除容器c的第一个元素。返回void。只适用于list或deque

6、容器删除容器内的一个元素删除一部分元素erase操作也不ty会检查它的参数。程序员必须确保用作参数的迭代器或迭代器范围是有效的11第三部分容器和算法赋值与swapc1=c2删除容器c1的所有元素,然后将c2的元素复制给c1c1.swap(c2)交换内容:调用完该函数后,c1中存放的是c2原来的元素,c2中存放的则是c1原来的元素。c1和c2的类型必须相同。该函数的执行速度通常要比将c2复制到c1的操作快12第三部分容器和算法选择容器类型的法则:1.如果程序要求随机访问元素,则应使用vector或deq

7、ue容器。2.如果程序必须在容器的中间位置插入或删除元素,则应采用list容器。3.如果程序不是在容器的中间位置,而是在容器首部或尾部插入或删除元素,则应采用deque容器。13第三部分容器和算法容器的总结标准库的顺序容器有三个类型vecotor:支持随机访问list:不支持随机访问deque:支持随机访问容器的常用操作插入:push_back(),insert()删除:erase()访问:back()14第三部分容器和算法使用泛型算法必须包含algorithm头文件:#include

8、hm>标准库还定义了一组泛化的算术算法#include算法accumulateintsum=accumulate(vec.begin(),vec.end(),42);//sum设置为vec的元素之和再加上42stringsum=accumulate(v.begin(),v.end(),string(""));算法replacereplace(ilst.begin(),ilst.end(),0,16);//把0替换为16算法countin

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。