特定の条件に基づいてマップから特定の範囲の要素を削除する必要がある場合の場合、「remove_if」と同等のアルゴリズムが求められます。ただし、STL のremove_if は、マップなどの連想コンテナに直接適用することはできません。
この機能を実現するには、条件を適用しながらマップを反復処理する別のアプローチがあります。条件が満たされると、対応する要素が消去されます。ただし、ループ内から要素を消去するとイテレータが無効になる可能性があります。
次の変更されたループはこの問題に対処します:
for(; iter != endIter; ) { if (predicate(*iter)) { iter = aMap.erase(iter); } else { ++iter; } }
要素が消去されていない場合にのみイテレータをインクリメントすることで、ループは正しく実行されます。イテレータの無効化を処理します。このアプローチにより、必要な範囲の要素が確実に削除され、マップを反復処理するときに安全に使用できます。
以上が条件に基づいてマップから一連の要素を安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。