Eri*_*ika 2 c++ iterator vector
在我的设置上运行:
vector<int> myvector;
for (int i=1; i<=5; i++) myvector.insert(myvector.end(),i);
vector<int>::iterator it;
for ( it=myvector.begin() ; it < myvector.end()+2; it++ )
cout << " " << *it;
Run Code Online (Sandbox Code Playgroud)
产量:
1 2 3 4 5 0 0
我原本以为尝试取消引用超出范围的迭代器会导致段错误.但它似乎产生了向量中包含的类型的空或默认初始化对象.
这是明确定义的行为吗?这个属性来自迭代器还是来自向量?迭代器在某种意义上是否会捕获超出范围的异常,而是返回一个空对象?
我尝试在C++ 11参考中找到这个,但感觉它有点过头了.