zoukankan      html  css  js  c++  java
  • STL容器的删除操作

    今天做一个小程序,居然发现用vector的删除操作时遇到了问题:考虑,当需要遍历容器,并且对其中某些元素进行删除操作,正确的做法是怎样?

    首先,容器的删除操作,如vector的erase,其参数为游标类型,直接在遍历过程中利用游标进行删除的话,涉及到游标的移动问题,容易产生越界错误。

    直接上例子吧,非常简单:

    //////////////////////////////////////////////////////
    vector<int>::iterator itr = v.begin();
    while( itr!=v.end() )
    
    {
      if( need to delete )
    
        itr = v.erase(itr);
    
      else
    
        itr++;
    }
    
    //////////////////////////////////////////////////////
    list<int>::iterator itr = lst.begin();
    while( itr!=lst.end() )
    
    {
      if( need to delete )
    
        itr = lst.erase(itr);
    
      else
    
        itr++;
    }

    其原理也非常容易记忆:只要保证在erase元素的时候,新游标通过返回值获取,而不能再自增即可。

  • 相关阅读:
    Session的配置
    插件编程小窥
    今日遇到了困难,顺便看了下SMO
    初识三层架构
    .NET文件类库
    JQuery学习笔记
    反射整理学习<二>
    通俗道破单例模式
    菜鸟写代码生成器最后一天完结篇
    卧谈会:委托与事件
  • 原文地址:https://www.cnblogs.com/haba/p/3411162.html
Copyright © 2011-2022 走看看