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
(也可能发生这样的情况,为了添加新元素,向量被复制到一个新位置,但我们的迭代器仍然指向旧位置,然后就会出现错误。)
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP