ホームページ >バックエンド開発 >C++ >条件に基づいてマップから一連の要素を安全に削除するにはどうすればよいですか?

条件に基づいてマップから一連の要素を安全に削除するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-27 20:48:11566ブラウズ

How to Safely Remove a Range of Elements from a Map Based on a Condition?

特定の条件でマップから要素の範囲を削除

特定の条件に基づいてマップから特定の範囲の要素を削除する必要がある場合の場合、「remove_if」と同等のアルゴリズムが求められます。ただし、STL のremove_if は、マップなどの連想コンテナに直接適用することはできません。

この機能を実現するには、条件を適用しながらマップを反復処理する別のアプローチがあります。条件が満たされると、対応する要素が消去されます。ただし、ループ内から要素を消去するとイテレータが無効になる可能性があります。

次の変更されたループはこの問題に対処します:

for(; iter != endIter; ) {
  if (predicate(*iter)) {
    iter = aMap.erase(iter);
  } else {
    ++iter;
  }
}

要素が消去されていない場合にのみイテレータをインクリメントすることで、ループは正しく実行されます。イテレータの無効化を処理します。このアプローチにより、必要な範囲の要素が確実に削除され、マップを反復処理するときに安全に使用できます。

以上が条件に基づいてマップから一連の要素を安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。