- // vector删除指定元素
- vector<int>::iterator iter = arr.begin();
- while (true)
- {
- if (iter == arr.end()) break;
- if (*iter == 10)
- {
- iter = arr.erase(iter); //迭代器删除之后会往下一个移动,这个时候返回新的位置
- //arr.erase(iter);iter++; //此种方法不可行,因为删除该迭代器指向的对象后,迭代器失效,再继续
- continue;
- }
- ++iter;
- }
-
- // map删除指定元素方法
- map<int, int>::iterator iter = m.begin();
- for (; iter != m.end();)
- {
- if (iter->second == 1)
- {
- iter = m.erase(iter); //关联容器的erase方法没有返回值,对于map删除iterator只会影响当前的迭代器
- //或者: m.erase(iter++); //更推荐的做法是在erase前让iterator指向下一个元素
- }
- else
- {
- ++iter;
- }
- }
原文地址:http://blog.csdn.net/shan165310175/article/details/38390423