您的位置:首页 > 其它

STL容器遍历时删除元素

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

std::vector<int> myvec;

std::vector<int>::iterator it = myvec.begin();
while( it != myvec.end())
{
it = myvec.erase(it);
}


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

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


注:不推荐使用该方法来删除某个元素,因为该方法不具有普适性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: