转自:http://blog.csdn.net/kuaile123/article/details/11105115
vector::erase误使用问题:
暂时使用经验: 不能在循环中使用,否则会报如题错误。
2014/03/11更新:循环删除容器中符合条件的元素
《C++ Primer(Edit 5)》, P.349
Both forms of erase return an iterator referring to the location after the(last) element that was removed.That is, if j is the element following i, then erase(i) will return an iterator referring to j.
Example:
list<int> lst = {0,1,2,3,4,5,6,7,8,9}
auto it = lst.begin();
while (it != lst.end())
{
if (*it % 2)
it = lst.erase(it);
else
++it;
}