0
実際に構造体/クラスのコンストラクタでベクトルを初期化しようとしています。構造体/クラス内のベクトルの初期化と出力
以下の内容はエラーなしでコンパイルされますが、ベクターの内容は出力されません。私はなぜ、助けが間違いなく評価されるのか知りたいです!
struct MyInt
{
friend ostream &operator<<(ostream &printout, const MyInt &Qn)
{
printout<< Qn.value << endl;
return printout;
}
int value;
MyInt (int value) : value (value) {}
};
struct MyStuff
{
std::vector<MyInt> values;
MyStuff() : values()
{
values.reserve (10); // Reserve memory not to allocate it 10 times...
}
};
int main()
{
MyStuff *mystuff1;
MyStuff *mystuff2;
for (int i = 0; i < 10; ++i)
{
mystuff1->values.push_back (MyInt (i));
}
for (int x = 0; x < 5; ++x)
{
mystuff2->values.push_back (MyInt (x));
}
vector<MyInt>::iterator VITER;
for (VITER =mystuff1->values.begin(); VITER!=mystuff1->values.end(); ++VITER)
{
cout<< *VITER;
}
return 0;
}
興味深いことに、これはクラッシュしませんでした。おそらくコンパイラはコードを到達不能として扱い、すべてを削除したでしょうか? – usr
@usr:動作は未定義です。たぶん月が正しい位置にあるときにクラッシュするでしょう。 –
もちろん、実装はこのように動作しますか?面白い。 – usr