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的原因。
每天明白一点知识