c++ STL 中的vector, list, map这些数据结构,经常需要在遍历时删除其中的元素,但是又不能直接删除,会出错。
在你调用erase方法删除元素时,erase方法会返回下一个元素的迭代器,利用这一点,可以写这样的代码:
for(vector<int>::iterator it=d.begin();it!=d.end(); )
{
if(*it==3)
{
it=d.erase(it);
}
else
{
it++;
}
}
这一点对于vector, list和map都适用。
对于map还可以写成这样
for(vector<int>::iterator it=d.begin();it!=d.end(); )
{
if(*it==3)
{
d.erase(it++);
}
else
{
it++;
}
}