STL

1、迭代器删除元素

1.序列容器,比如vector
序列容器的erase返回的是被删除元素后的有效迭代器。

vector<int> vec;
vector<int>::iterator iter;
for(iter = vec.begin();iter!=vec.end();)
{
   if(need_delete)
   {
     iter = vec.erase(iter);
   }else
     ++iter;
}

如果上面程序中要在for循环中使用++iter的话,就需要在删除元素后做一次--iter操作,但这样的效率显然没有上面代码效率高。注意到vector的erase方法在执行后,当前迭代器自动指向了下一个元素位置,这也是为什么不要在删除元素后再++iter的原因。

原文地址:https://www.cnblogs.com/wft1990/p/6618917.html