ポインターの標準ベクトルがあります。
このベクトルへのイテレータが無効になる可能性があるのは、どのような状況ですか?
オブジェクトが削除されると、それを参照するベクトル反復子が無効になると信じる理由があります。しかし、これは私には正しくないようです。これが Managed .NET のコンテナーの標準的な動作であると私は信じていますが、これは C++ ではうまくいかないように思えます。
for (It = Vec.begin(); It != Vec.end(); It++){
GoToOtherCode((*It));
}
function GoToOtherCode (ObjectType* Obj){
delete Obj;
}
これは Iterator It を無効にするべきですか? そうすべきではないように思えますが、デバッグするのが難しい問題で立ち往生しています! (回避策が怖いです-整数インデックスを介してベクトルを反復処理します。(これはうまく機能します...上記が無効化の問題を引き起こしている理由が怖いだけです)。
お時間をいただきありがとうございます。
編集:アドバイスをありがとう。一般的なコンセンサスは、上記のコードは危険ですが、Iterator を無効にしないということです。Visual Studio 2008 デバッガーでエラーが発生したと思います。プロジェクトを翌日開いた後、この無効化の問題がなくなったからです。そのため、コンピューターの多くの場合と同様に、他に何も機能しない場合は、リセットしてみてください。