EDIT消去:この質問は、特にはstdを指し::リストを - スタックオーバーフロー上の他の同様の質問ははstdを参照してください::ベクトルC++一覧イテレーションと
私はC++を使用して、トラブルSTDから要素を消去を抱えています:: iterating中のリスト私は、カスタムクラスのリスト(この質問のために「オブジェクト」)を持っている、と私のコードは次のようになります。STDへの呼び出しのために「ノーマッチング機能:私はエラーを取得しています
for(auto i : Objects)
if(i.EraseFlag == true)
{
i = Objects.erase(i);
}
: :list :: erase(Object &) '
これは、リストを反復処理し、要素を消去し、消去を考慮に入れたイテレータを返す正しい方法だと思います(C++ 11以降)。私は何か間違っている。以前はベクトルを使用しているとき、私はforループで整数である 'Objects.erase(Objects.begin()+ i)'を使用しますが、リストのアクセス要件を考えるとこれは動作しません。
ヘルプありがとうございます。
おかげ
erase()はパラメータとしてイテレータをとります。 –
範囲ベースのforループ中にシーケンスを変更しないでください。 – PaulMcKenzie
*これは、リストを反復処理し、要素を消去し、消去を考慮したイテレータを返す、正しい方法(C++ 11以降)だと思います。* 'イレーズ/除去'イディオム、ループは必要ありません? – PaulMcKenzie