标签:
STL容器遍历时在循环体内删除元素最容易出错了,根本原因都是因为迭代器有效性问题,在此记下通用删除方法,该方法适用于所有容器:
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++); }
但是不推荐使用该方法来删除某个元素,因为该方法不具有普适性。
标签:
原文地址:http://www.cnblogs.com/liulc/p/5059555.html