ホームページ > バックエンド開発 > C++ > 範囲ベースの For ループを使用しているときに C ベクトルから要素を削除できますか?

範囲ベースの For ループを使用しているときに C ベクトルから要素を削除できますか?

Linda Hamilton
リリース: 2024-11-28 17:41:14
オリジナル
941 人が閲覧しました

Can You Remove Elements from a C   Vector While Using a Range-Based For Loop?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート