値をベクトルにプッシュして出力するための次のプログラムを作成しました。ベクトルから値を出力するだけでなく、プッシュすると、未定義の動作をするようです。たとえば、私の期待される出力は、(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