【发布时间】:2015-09-27 09:31:40
【问题描述】:
我正在遍历带有 auto 的向量(附加代码)。在遍历时,我还在后面附加了一些元素。我没想到会得到这样的输出。
#include <iostream>
#include <vector>
using namespace std;
vector <int> dynamic_vector;
void access( )
{
for ( auto i : dynamic_vector ) {
if ( i == 3 ) {
dynamic_vector.push_back( 4 );
dynamic_vector.push_back( 5 );
}
cout << i << endl;
}
}
int main() {
dynamic_vector.push_back( 1 );
dynamic_vector.push_back( 2 );
dynamic_vector.push_back( 3 );
access( );
return 0;
}
输出:
1
2
3
我期待从 1 到 5 的所有数字都会被打印出来。我无法理解如何使用 auto 进行遍历?
【问题讨论】:
-
Re 我希望从 1 到 5 的所有数字都会被打印出来——我希望自己有鼻恶魔。这是未定义的行为,鼻恶魔是调用未定义行为的典型结果。
标签: c++ c++11 vector iterator auto