据说如果交换两个容器的值,则迭代器不会失效。迭代器在与临时容器交换后变为无效
所以下面的代码工作正常
vector<int> v1;
v1.push_back(1);
vector<int>::iterator i = v1.begin();
vector<int> v2(v1);
v2.swap(v1);
cout<<*i<<endl; //output 1
但是当我转身的临时容器,迭代器变得无效,程序崩溃。
vector<int> v1;
v1.push_back(1);
vector<int>::iterator i = v1.begin();
vector<int>(v1).swap(v1);
cout<<*i<<endl; //i become invalid and program crashes here
这可能是一个愚蠢的问题,但我无法弄清楚什么是错的。
为什么有投票结束该问题?似乎对我有效。 –
请注意,您可以改为存储索引,因为这是相对于基本数组。 – GManNickG