C++ 程序中的迭代器失效
本教程中,我们将讨论一个程序,以了解 C++ 中的迭代器失效。
在对容器对象的元素进行迭代时,如果我们不应用边界检查,则有时可能会无效。这主要是由于容器对象形状和大小的变化。
示例
#include <bits/stdc++.h> using namespace std; int main() { //declaring a vector vector <int> v{1, 5, 10, 15, 20}; //changing vector during execution //which will cause bound invalidation for (auto it=v.begin();it!=v.end();it++) if ((*it) == 5) v.push_back(-1); for (auto it=v.begin();it!=v.end();it++) cout << (*it) << " "; return 0; }
输出
1 5 10 15 20 -1 -1
(也可能发生这样的情况,为了添加新元素,向量被复制到一个新位置,但我们的迭代器仍然指向旧位置,然后就会出现错误。)
广告