用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++ vector删除元素

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

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

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

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

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

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

vector用erase连续删除元素怎么会出错

vector用erase连续删除元素怎么会出错 vector vt;  for (int i = 0; i { vt.push_back(i); } vector::iterat...

std中vector和list容器遍历时元素的动态删除

在容器遍历过程中怎样动态地删除满足条件的元素,而不影响容器本次的遍历过程

c++ vector删除元素

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

C++ Primer 9.35——循环遍历vector容器删除指定元素的标准写法

在做C++ Primer 习题9.35时,答案如下:    #include #include #include using namespace std; int main() { str...

STL中map/vector的删除元素操作

在我们使用C++中的STL的时候,可以使用迭代器iterator进行遍历,但是当我们通过iterator对vector和map删除元素的时候,要格外的小心,往往操作不当,导致iterator失效,后果...

vector中利用迭代器删除满足一定条件的元素或者值

#include "stdafx.h" #include #include #include #include using namespace std; class TestData { pub...

vector 删除和添加元素的初学心得

STL中的vector,动态增长数组,支持随机访问,当开辟的连续空间不够存放(capacity=size时又插入或加入新元素),开辟新的空间(capacity是原来的两倍),将原来的拷贝至新的空间并把...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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