vector::erase 从指定容器删除指定的元素

两个重载:

iterator erase (iterator position);
删除指定位置position的元素,并返回删除元素的下一个元素的迭代器
iterator erase (iterator first, iterator last);
删除从first到last(不包过last)之间的元素 [first,last),并返回last位置迭代器 遍历删除元素方法:
1.

  

  vector<int>array;
  array.push_back();
  array.push_back();
  array.push_back();
  array.push_back();
  array.push_back();
  array.push_back();
  vector<int>::iterator itor;
  for (itor = array.begin(); itor != array.end(); itor++){
    if (*itor == ) array.erase(itor);
  }   for (itor = array.begin(); itor != array.end(); itor++)
  {
    cout << *itor << " ";
  }

这种使用方法会内存错误,因为删除itor指定元素后,itor就编程野指针了,正确使用是itor重新赋值为erase返回值。

2.

      vector<int>array;
  array.push_back();
  array.push_back();
  array.push_back();
  array.push_back();
  array.push_back();
  array.push_back();
  vector<int>::iterator itor;
  for (itor = array.begin(); itor != array.end(); itor++){
    if (*itor == ) itor=array.erase(itor);
  }   for (itor = array.begin(); itor != array.end(); itor++)
  {
    cout << *itor << " ";
  }

这个方式在删除连续元素会错误,结果发现是100 300 300 500,因为itor指向删除元素下一个元素后,itor++就跳过了删除元素的下一个元素。

3.正确使用方式

    vector<int>array;
array.push_back();
array.push_back();
array.push_back();
array.push_back();
array.push_back();
array.push_back();
vector<int>::iterator itor;
for (itor = array.begin(); itor != array.end(); ){
if (*itor == ) itor=array.erase(itor);
else itor++;
}
for (itor = array.begin(); itor != array.end(); itor++)
{
cout << *itor << " ";
}

 

最新文章

  1. Alpha阶段第五次Scrum Meeting
  2. linux+php+apache web调用python脚本权限问题
  3. class-dump获取iOS私有api
  4. hdu 3518 Boring counting 后缀数组基础题
  5. sql根据&#39;/&#39;截取最后的字符串
  6. 设计模式之“Observer”注疏#01
  7. 懒人的小技巧, 批处理修改IP
  8. j2ee中的2是什么意思
  9. 【打CF,学算法——三星级】Codeforces Round #313 (Div. 2) C. Gerald&amp;#39;s Hexagon
  10. appium滑动操作(向上、向下、向左、向右)
  11. css 字体两端对齐
  12. docker(4)docker的网络,自定义网桥
  13. Nagios监控
  14. jmeter分布式压测(多台电脑一起压测)
  15. 理解vue之element-ui中的 &lt;template slot-scope=&quot;scope&quot;&gt;
  16. ScheduledExecutorService的两种方法
  17. 如何将baidu地图中的baidu logo 去掉
  18. bzoj 2119 股市的预测——枚举长度的关键点+后缀数组
  19. Openfiler能把标准x86/64架构的系统变成一个强大的NAS、SAN存储和IP存储网关
  20. Spark-RDD算子

热门文章

  1. mybatis mapper调用mysql存储过程
  2. 前端(五):JavaScript面向对象之内建对象
  3. 新手学习Java,该从哪里学起?
  4. JavaScript有限状态机实现方式
  5. jquery not() 方法
  6. Codeforces(Round #93) 126 B. Password
  7. world特殊控制符输入
  8. WinAPI: OpenProcess、GetExitCodeProcess、TerminateProcess (测试强制关闭 OICQ)
  9. 在Linux中安装redmine
  10. 二维数组中的查找(C++和Python实现)