STL容器遍历时删除元素

STL容器遍历时在循环体内删除元素最容易出错了,根本原因都是因为迭代器有效性问题,在此记下通用删除方法,该方法适用于所有含erase成员函数的序列容器:

1 std::vector<int> myvec;
2 
3 std::vector<int>::iterator it = myvec.begin();
4 while( it != myvec.end())
5 {
6     it = myvec.erase(it);
7 }

容器list有个比较另类的删除方法,也能得到正确结果,如下代码所示:

std::list<int> mylist;
std::list<int>::iterator it = mylist.begin();
while (it != mylist.end())
{
    mylist.erase(it++);
}

注:不推荐使用该方法来删除某个元素,因为该方法不具有普适性。

posted @ 2015-12-19 18:41  鹏城财少  阅读(688)  评论(0)    收藏  举报