我编写了下列程序,用于将值推入并将值打印到向量中。看起来,如果我推送以及从矢量打印值,它给了我不确定的行为。例如,我的预期输出应该是:(1,3,4,5),而我的输出是(0,3,4,5)。有人可以解释我的错在哪里。从C++向量推送和检索值的意外输出
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<unsigned> vec;
vec.push_back(1); vec.push_back(3); vec.push_back(4); vec.push_back(5);
for(vector<unsigned>::iterator i=vec.begin(), l=vec.end(); i!=l; ++i){
vec.push_back(2);
cout<<(*i)<<"\n";
}
return 0;
}
当'push_back()'发生缓冲区扩展时,我听说'std :: vector'的迭代器失效了。 (我想更多的信息应该在回答中) – MikeCAT