【发布时间】:2019-08-07 14:12:47
【问题描述】:
我尝试运行下面的代码来检查迭代器的可访问性:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> n = {1,24,5,4};
vector<int> :: iterator itr;
itr = n.begin();
for(;;itr++){
cout<<*itr<<endl;
}
return 0;
}
程序在结束时执行并退出了分段错误。 我从中了解到,直到某些迭代,迭代器返回的值在其边界之外和该程序崩溃之后为零。 我想知道当我们在它的边界之外访问迭代器时会发生什么,如果它像一个指针一样,它指向什么?
【问题讨论】:
-
这是未定义的行为。
-
“我想知道当我们在迭代器边界之外访问迭代器时会发生什么……” 你可能杀死了一群可爱的小猫。无法判断调用 undefined behavior 会发生什么。
-
虽然,平心而论,可爱的小猫很可能是被鼻恶魔附身了,所以摆脱了!