用erease删除vector里的元素

原创 2007年09月27日 20:15:00
一直都没怎么用过STL,迭代器更是极少用到。今天在代码里用到vector,因为要删除其中元素,所以只好用迭代器进行遍历。
         vector里放的是一个对象的指针,当满足条件时就删除对象并从vector里将该元素删除。唉,一时犯晕,在操作时竟然先删除vecotr中的元素,然后删除对象,代码片断如下。

    std::vector<CGapPoolBase*>::iterator iter;
    
for (iter = m_subGapPool.begin(); iter!= m_subGapPool.end(); iter++)
    
{
        
if ((*iter)->freeSeqGap(pgap))
        
{
            
if ((*iter)->isIdle())
            
{
                m_subGapPool.erase(iter);
                delete (
*iter);
            }

            
return true;
        }

    }


         红色部分代码有问题,那两句话应该调换一个顺序。因为没有用过erease,所以不知道erease后迭代器会指向下一个元素,结果在其他地方找了半天,浪费了不少时间,看来有必要好好修练一下Generic Programming和STL了。

         在《The C++ Standard Library》是这么描述erease的,c.erase(pos):  Removes the element at iterator position pos and returns the position of the next element.

相关文章推荐

C++将数据写入磁盘文件

/* 对磁盘文件作如下操作: (1) 在磁盘上建立一个文本文件,该文件中存放若干个实数; (2) 在磁盘上已有文本文件中,读出若干个实数,并求出其中的最大数、最小数和平均值; (3) 向文件追加记录、...

C++9.3.7 容器删除元素--erase、clear、pop_front函数

简介看一下9.5节容器之间的区别—-list类似于链表,容易增删改,queue是两端增删改容易。,所以删除时,用到最多的容器时list1.删除第一个或最后一个元素—–pop_front 和pop_ba...

C++抽象编程——STL(4)——vector中元素的插入和删除和赋值

C++抽象编程——STL(4)——vector中元素的插入和删除和赋值我们上篇博文中主要提到了vector中的一些常见的方法,下面的代码中主要就vector中的方法进行编程实现:如果对一些方法的意义不...
  • redRnt
  • redRnt
  • 2017年03月30日 00:25
  • 507

C++/STL用erase删除元素(vector,deque),(list,set,map)

STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时...

vector容器删除某些元素且释放内存

1,size和capacity size: 指目前容器中实际有多少元素,对应的resize(size_type)会在容器尾添加或删除一些元素,来调整容器中实际的内容,使容器达到指定的大小。 capac...

C++ vector删除元素

当要删除迭代器中满足指定条件的元素时,如果运用不熟练经常容易出现错误,erase函数删除指定元素后返回的是指向删除元素的下一个元素的指针,如果不能应用好这一点,那么就会出现如下错误。 ...
  • gu_gu_
  • gu_gu_
  • 2016年08月17日 10:21
  • 344

STL—vector删除重复元素

STL提供了很多实用的算法,这里主要讲解sort和unique算法。   删除重复元素,首先将vector排序。 sort( vecSrc.begin(), vecSrc.end() );   然后使...

删除vector容器中的对象元素的三种方法:pop_back, erase与remove算法

向量容器的成员函数pop_back()可以删除最后一个元素,而函数erase()可以删除由一个iterator指出的元素,也可以删除一个指定范围的元素。    还可以采用通用算法remove()来删...

c++ vector删除元素

现在用stl的人越来越多, stl确实是套很漂亮的算法和数据结构库. 但是初用stl的人往往会遇上很多问题. 从一个容器中删除元素,是很常用的操作,但是也是初学者常会犯错误的地方,删除map和lis...
  • ltx06
  • ltx06
  • 2014年04月09日 21:07
  • 358

STL—vector删除重复元素

z STL提供了很多实用的算法,这里主要讲解sort和unique算法。 删除重复元素,首先将vector排序。 sort( vecSrc.begin(), vecSrc.end()...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用erease删除vector里的元素
举报原因:
原因补充:

(最多只允许输入30个字)