首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

迭代器的施用-关于迭代器的失效

2012-08-15 
迭代器的使用--关于迭代器的失效这是程序员面试宝典上的一个小题。要点是:使用erase之后迭代器失效。实际上

迭代器的使用--关于迭代器的失效

这是程序员面试宝典上的一个小题。

要点是:使用erase之后迭代器失效。

实际上失效是指原来的迭代器,在删除一个元素之后,自动指向了下一个元素。

测试代码如下,删除容器中的值为6的所有元素。

A 错误的代码为:

#include <iostream>#include <vector>using namespace std;void print(vector<int>);int main(){        vector<int> array;        array.push_back(1);        array.push_back(6);        array.push_back(6);        array.push_back(3);        vector<int> :: iterator itor;        for (itor = array.begin(); itor != array.end();)        {                if (6 == *itor)                {                        array.erase(itor);                }                else                        itor++;        }        cout << "vector size is: " << array.size() << endl;        for (itor = array.begin(); itor != array.end(); itor++)        {                cout << *itor << " " << endl;        }        return 0;}

结果是 1 ,3

可见,使用了erase之后,迭代器自动指向了下一个元素。


热点排行