C 11 範囲ループによるベクトルの反復と変更
C 11 の範囲ベースの for を使用してベクトルをループする場合、一般的な質問が発生します。 : 内でアイテムを削除できますか? loop?
範囲ベースの For ループの制限
範囲ベースの for ループはコンテナの各要素に 1 回アクセスするように設計されているため、答えはノーです。 。コンテナの変更、要素の削除、または非線形反復の実行が必要な場合は、代わりに従来の for ループを使用する必要があります。
従来のループによるベクトルの変更
反復中にベクトルから項目を削除するには、従来の for メソッドを使用できます。ループ:
for (auto it = inv.begin(); it != inv.end(); ++it) { // Do some stuff if (blah) { it = inv.erase(it); --it; // Decrement iterator to avoid skipping an element } }
従来のループの利点
従来のループは、範囲ベースの for ループよりも柔軟性が高くなります。
以上が範囲ベースの For ループを使用しているときに C ベクトルから要素を削除できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。