2019独角兽企业重金招聘Python工程师标准>>>

/*- ==========================================================
*     文件名  :STL_con_ite_6.cpp
*     开发人员:袁培荣
*     当前版本:1.0.0.2595
*     创建时间:2012-05-24
*     修改时间:2012-05-24
*     功能说明:STL 容器和迭代器连载6_顺序容器的操作3
*     版权说明:版权所有 袁培荣 YuanPeirong
*     编译环境:Windows 7(x64) SP1 简体中文专业版
*     编译器:  Visual Studio 2010 SP1(中文旗舰版)MinGW 20120426 GNU GCC 4.6.2Visual C++ 6.0 SP6(中文企业版)
- ==========================================================*/#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <string>using std::cout;
using std::endl;
using std::vector;
using std::list;
using std::deque;
using std::string;int main(int argc, char* argv[])
{//下面来介绍删除容器内元素的相关操作//先定义一个容器,并添加101个元素。vector<int> v1;for(int i=0; i!=101; i++) //C++程序员习惯于用i!=101,而不是i<101v1.push_back(i);cout<<"在所有删除操作前v1.size()="<<v1.size()<<endl;//第一种方法://erase(p) :删除迭代器p所指向的元素//返回指向被删除元素的下一位置的迭代器。//注意:p必须真实地指向实际存在的元素。cout<<"第一种方法:"<<endl;cout<<"删除前v1的第96个元素值是(方法1输出):"<<*(v1.begin()+95)<<endl;cout<<"删除前v1的第96个元素值是(方法2输出):"<<v1[95]<<endl;//我们把第96个元素删除vector<int>::iterator iter1=v1.erase(v1.begin()+95);//验证:cout<<"删除后v1.size()="<<v1.size()<<endl;cout<<"删除后v1的第96个元素值是(方法1输出):"<<*iter1<<endl;cout<<"删除后v1的第96个元素值是(方法2输出):"<<v1[95]<<endl;//第二种方法://erase(b,e) :删除迭代器b,e所指向的元素形成的左闭合区间//返回指向被删除的最后一个元素的下一位置的迭代器。cout<<"第二种方法:"<<endl;cout<<"删除前v1的第81个元素值是:"<<*(v1.begin()+80)<<endl;cout<<"删除前v1的第82个元素值是:"<<*(v1.begin()+81)<<endl;cout<<"删除前v1的第83个元素值是:"<<*(v1.begin()+82)<<endl;//我们把第81,82,83三个元素删除iter1=v1.erase(v1.begin()+80, v1.begin()+83);//验证:cout<<"删除后v1.size()="<<v1.size()<<endl;cout<<"删除后v1的第81个元素值是(方法1输出):"<<*iter1<<endl;cout<<"删除后v1的第81个元素值是(方法2输出):"<<*(v1.begin()+80)<<endl;cout<<"删除后v1的第82个元素值是:"<<*(v1.begin()+81)<<endl;cout<<"删除后v1的第83个元素值是:"<<*(v1.begin()+82)<<endl;//第三种方法://pop_back() 删除容器的最后一个元素,返回void类型cout<<"第三种方法:"<<endl;cout<<"删除前v1的最后一个元素值是:"<<*(v1.end()-1)<<endl;if(v1.size()!=0)    //防止容器为空时,删除操作引发错误v1.pop_back();//验证:cout<<"删除后v1.size()="<<v1.size()<<endl;cout<<"删除后v1的最后一个元素值是:"<<*(v1.end()-1)<<endl;//第四种方法://pop_front() 删除容器的第一个元素,返回void类型//值得注意的是,这种方法只能用于list和deque容器list<int> l1(3,0);*l1.begin()=0;      //为便于区分元素,将各修改成不相同//下面指出修改list容器的元素时的两种错误//l1[1]=1;           //list容器不支持l1[0]这样的下标访问(下面会讲)//*(l1.begin()+2)=2; //list容器的迭代器不能与数值相加(复习一下前面)list<int>::iterator iter2=l1.begin();iter2++;             //迭代器的++操作是对所有容器都支持的*(iter2)=1;iter2++;*(iter2)=2;cout<<"第四种方法:"<<endl;cout<<"删除前l1.size()="<<l1.size()<<endl;cout<<"删除前l1的第一个元素值是:"<<*l1.begin()<<endl;if(!l1.empty())     //防止容器为空时,删除操作引发错误l1.pop_front(); //empty()用来判断容器是否为空,下面会讲//验证:cout<<"删除后l1.size()="<<l1.size()<<endl;cout<<"删除后l1的第一个元素值是:"<<*l1.begin()<<endl;//虽然第四种方法pop_front(t)只支持list和deque容器//但我们用第一种方法的一个特例就能和做到第二种方法同样的效果://例如:cout<<"用第一种方法的特例实现第四种方法:"<<endl;cout<<"删除前v1.size()="<<v1.size()<<endl;cout<<"删除前v1的第一个元素值是:"<<*v1.begin()<<endl;v1.erase(v1.begin());//验证:cout<<"删除后v1.size()="<<v1.size()<<endl;cout<<"删除后v1的第一个元素值是:"<<*v1.begin()<<endl;//这样,我们可以为不支持第四种方法的容器扩展这一种方法//第五种方法://clear() 删除容器内的所有元素,返回void类型cout<<"第五种方法:"<<endl;cout<<"清空前v1.size()="<<v1.size()<<endl;cout<<"清空前l1.size()="<<l1.size()<<endl;//清空v1和l1v1.clear();l1.clear();//验证:cout<<"清空后v1.size()="<<v1.size()<<endl;cout<<"清空后l1.size()="<<l1.size()<<endl;return 0;
}//============================
//运行结果:
//============================
// 在所有删除操作前v1.size()=101
// 第一种方法:
// 删除前v1的第96个元素值是(方法1输出):95
// 删除前v1的第96个元素值是(方法2输出):95
// 删除后v1.size()=100
// 删除后v1的第96个元素值是(方法1输出):96
// 删除后v1的第96个元素值是(方法2输出):96
// 第二种方法:
// 删除前v1的第81个元素值是:80
// 删除前v1的第82个元素值是:81
// 删除前v1的第83个元素值是:82
// 删除后v1.size()=97
// 删除后v1的第81个元素值是(方法1输出):83
// 删除后v1的第81个元素值是(方法2输出):83
// 删除后v1的第82个元素值是:84
// 删除后v1的第83个元素值是:85
// 第三种方法:
// 删除前v1的最后一个元素值是:100
// 删除后v1.size()=96
// 删除后v1的最后一个元素值是:99
// 第四种方法:
// 删除前l1.size()=3
// 删除前l1的第一个元素值是:0
// 删除后l1.size()=2
// 删除后l1的第一个元素值是:1
// 用第一种方法的特例实现第四种方法:
// 删除前v1.size()=96
// 删除前v1的第一个元素值是:0
// 删除后v1.size()=95
// 删除后v1的第一个元素值是:1
// 第五种方法:
// 清空前v1.size()=95
// 清空前l1.size()=2
// 清空后v1.size()=0
// 清空后l1.size()=0
//============================

转载于:https://my.oschina.net/u/186539/blog/59452

STL 容器和迭代器连载6_顺序容器的操作3相关推荐

  1. STL 容器和迭代器连载8_访问顺序容器的元素

    2019独角兽企业重金招聘Python工程师标准>>> /*- ========================================================== ...

  2. 疯子的算法总结(三) STL Ⅱ迭代器(iterator) + 容器

    一.迭代器(Iterator) 背景:指针可以用来遍历存储空间连续的数据结构,但是对于存储空间费连续的,就需要寻找一个行为类似指针的类,来对非数组的数据结构进行遍历. 定义:迭代器是一种检查容器内元素 ...

  3. 《C++ Primer中文版(第五版)》 第九章 顺序容器

    <C++ Primer中文版(第五版)> 第九章 顺序容器 元素在顺序容器中的顺序与其加入容器时的位置相对应.关联容器中元素的位置由元素相关联的关键字值决定. 所有容器都共享公共的接口,不 ...

  4. 2 C++标准库(1- IO库、顺序容器和泛型算法)

    2-1 C++标准:IO库.顺序容器和泛型算法 8 IO库 8.1 IO类 8.2 文件输入输出 8.2.1 使用文件流对象 8.2.2 文件模式 8.3 string流 8.3.1 使用istrin ...

  5. 《C++Primer》第九章-顺序容器-学习笔记(1)-顺序容器定义与操作

    <C++Primer>第九章-顺序容器-学习笔记(1) 文章目录 <C++Primer>第九章-顺序容器-学习笔记(1) 摘要 顺序容器的定义 容器元素的初始化 将一个容器初始 ...

  6. c++语法9 顺序容器

    文章目录 顺序容器的类型 顺序容器适配器 1 顺序容器的定义 1.1容器元素的初始化 1.2容器内元素的类型约束 2 迭代器 3 顺序容器的操作 3.1 容器定义的类型别名 3.2 begin和end ...

  7. C++ Primer 09 顺序容器

    1. 顺序容器类型 顺序容器   vector 支持快速随机访问 list 支持快速插入.删除       deque 双端队列 顺序容器适配器          stack 后进先出(LIFO)栈 ...

  8. c语言stl模板,c/c++开发分享C++ 标准模板库 STL 顺序容器详解

    c++ 标准模板库 stl 顺序容器 容器 顺序性 重复性 支持迭代器 vector 动态数组 无序 可重复 随机访问迭代器 deque 双向队列 无序 可重复 随机访问迭代器 list 双向链表 无 ...

  9. C++中STL容器利用迭代器删除元素小结

    C++中STL容器利用迭代器删除元素小结 在STL容器中删除元素,容易导致迭代器失效,故应该清楚明白其用法,现在总结一下. 转载自:https://blog.csdn.net/yf_li123/art ...

最新文章

  1. 在CentOS 6.9 x86_64的nginx 1.12.2上开启标准模块ngx_http_map_module实录
  2. Redis学习-String
  3. hdu1247 Hat’s Words
  4. golang非对称加密
  5. codeforces cf 521(div3) E题
  6. 非看不可!飞猪技术专家教你在家高效办公!
  7. PCB设计--PCB画图技巧
  8. Java零基础入门 : (2) 代码编辑器IDEA安装与配置
  9. 只出现一次的数字 (桶排序和位运算)
  10. PHP网站实现地址URL重定向
  11. 控件时出现“未能实例化控件******,VS2008 中无法使用ACTIVEX控件的解决
  12. 苹果雪豹操作系统正式版_别着急更新!苹果 iOS 14 正式版导致部分游戏崩溃
  13. 干货!一文带你认清SD卡、TF卡、SIM卡!
  14. git大坑---cleanup
  15. 【有奖调研】| 参与区块链调研,赢千元大奖!
  16. 编译原理(三)语法分析:3.二义性与二义性的消除
  17. 自定义右键的打开方式
  18. 2021年中国纺织行业产业链发展分析:纺织行业下游零售市场逐渐恢复增涨[图]
  19. Java Bean 转 Map 的巨坑,注意了!!!
  20. 加密狗软加密方案离线绑定与解绑

热门文章

  1. AWS 给负载均衡器配置侦听器并上传IAM证书
  2. 《UNIX环境高级编程 3rd》笔记(1 / 21):UNIX基础知识
  3. 在Windows下安装JDK的通常步骤
  4. java数据包解析_请教http请求数据包如何解析 重组
  5. 怎么关闭或者卸载ivanti_电脑软件卸载不了怎么办,教您解决电脑软件无法卸载方法技巧...
  6. Linux strtol将十六进制转化为十进制
  7. C++中vector章节iterator与const_iterator及const iterator区别
  8. C++学习笔记 简单部分
  9. Java基础——Java多线程中sleep()、wait()和notify()
  10. 看了就彻底明白人生!!!