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

STL中erase()小心使用

http://blog.sina.com.cn/s/blog_67b6b720010114d3.html erase()函数的功能是用来删除容器中的元素 删除某个容器里的某个元素:c.erase(...
  • yangruibao
  • yangruibao
  • 2013年06月06日 16:10
  • 16908

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

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

std::vector删除重复元素和查找

原文网址:http://blog.csdn.net/nowen/article/details/5509525 需要这样一个容器,可以自动地删除重复元素,并能很方便地进行查找操作! ...
  • yyt_EnjoyVC
  • yyt_EnjoyVC
  • 2013年02月19日 11:48
  • 13721

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

#include "stdafx.h" #include #include #include #include using namespace std; class TestData { pub...
  • moqj_123
  • moqj_123
  • 2014年07月30日 18:27
  • 1422

关于 vector 中 erase 函数的使用注意事项

做项目时,总是
  • Jff316948714
  • Jff316948714
  • 2014年07月04日 18:43
  • 3177

vector中去除重复的元素

1.使用unique函数// UniqueVector.cpp : Defines the entry point for the console application. //#include "s...
  • HE19930303
  • HE19930303
  • 2016年01月25日 14:39
  • 13966

使用STL vector的几种清空容器(删除)办法

转载自:http://blog.csdn.net/metalkittie/article/details/3115750vector vecInt; for (int i=0;i
  • u012580994
  • u012580994
  • 2015年02月25日 02:49
  • 26625

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

在容器遍历过程中怎样动态地删除满足条件的元素,而不影响容器本次的遍历过程...
  • cjc211322
  • cjc211322
  • 2014年11月04日 15:02
  • 1088

std::vector的几种遍历方式比较

std::vector是我在标准库中实用最pi
  • ls306196689
  • ls306196689
  • 2014年06月29日 16:57
  • 50031

vector 查找/查找和对比结构体元素值

原地转:http://www.cplusplus.com/reference/algorithm/find_if/ #include #include #include #include...
  • pengrui18
  • pengrui18
  • 2014年03月18日 10:47
  • 6925
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用erease删除vector里的元素
举报原因:
原因补充:

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