用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.

vector迭代器erease操作问题

最近在写一个作业题,其中用到了vector的erase操作,不常用,不记得具体怎么回事了,偷个懒,网上搜了一下,直接照抄了,代码如下 [cpp] view plaincopy...
  • lenok
  • lenok
  • 2013年06月01日 15:46
  • 633

C++迭代器iterator段错误segmentation fault (core dumped)

segmentation fault (core dumped) 段错误 迭代器
  • Z_J_Q_
  • Z_J_Q_
  • 2017年06月04日 20:47
  • 576

KAMAILIO (OPENSER) Devel Guide

KAMAILIO (OPENSER) Devel Guide Daniel-Constantin Mierla http://www.asipto.com> Elena-Ra...
  • gxp
  • gxp
  • 2011年11月08日 13:14
  • 1669

没有躲过的坑--vector使用erase后迭代器变成野指针

vector上镜率非常高,但是最近又被他fuck了一下。使用的就是vector的erase方法。erase–return value 首先需要明确一下vector的两种erase:C++98中是这...
  • wangshubo1989
  • wangshubo1989
  • 2015年11月30日 23:38
  • 5504

vector中erase用法注意事项

vector::erase():从指定容器删除指定位置的元素或某段范围内的元素 vector::erase()方法有两种重载形式 如下: iterator erase(   iterator _Whe...
  • dgyanyong
  • dgyanyong
  • 2014年03月15日 03:41
  • 64953

选择删除STL标准容器元素的方法

删除容器中有特定值的所有元素: 如果容器是vector、string、deque,则使用erase-remove用法 如果容器是list,则使用list::remove 如果容器是一个标准关联...
  • liuyuan185442111
  • liuyuan185442111
  • 2017年03月22日 15:02
  • 183

remove与erease配合使用删除元素

#include #include #include #include using namespace std; class is_odd { public: bool operator()...
  • xiaofang3a
  • xiaofang3a
  • 2016年08月06日 16:34
  • 158

STL Vector remove()和erase()的使用

STL中remove()只是将待删除元素之后的元素移动到vector的前端,而不是删除。若要真正移除,需要搭配使用erase()。 例子如下: #include #include #inc...
  • yockie
  • yockie
  • 2012年08月13日 21:29
  • 37876

vector::erase方法,返回值是更新后的容器的被删除元素的后一个元素的迭代器,如果需要指向删除元素的前面一个元素的迭代器就要-1

vector::erase方法,返回值是更新后的容器的被删除元素的后一个元素的迭代器,如果需要指向删除元素的前面一个元素的迭代器就要-1...
  • qq_34581491
  • qq_34581491
  • 2016年05月24日 07:34
  • 903

关于STL容器中vector特定元素的删除问题

问题描述: 给定一组整形数,使用vector容器存储,现在要求删掉其中值大于某个值的元素。 即:初始数组为{8,6,4,2},要求删除其中大于5的元素。 这里使用网上给出的一些方法(错的),主要参考这...
  • LYS_SONG
  • LYS_SONG
  • 2016年09月27日 15:39
  • 768
收藏助手
不良信息举报
您举报文章:用erease删除vector里的元素
举报原因:
原因补充:

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