STL のコレクションからアイテムを削除するには、イディオムになっている非常に頻繁に使用される手法が必要です:消去-削除-イディオム
このイディオムの最も一般的な使用法の 1 つは、あるタイプのアイテムT
をvector<T>
std::vector<Widget> widget_collection;
Widget widget;
widget_collection.erase(
std::remove(widget_collection.begin(), widget_collection.end(), widget),
widget_collection.end());
これは明らかに非常に冗長であり、DRY の原則に違反しています。問題のベクトルは 4 回必要です。
私の質問は、なぜ標準が便利なヘルパーを提供しないのですか?
何かのようなもの
widget_collection.erase_remove(widget);
また
std::erase_remove(widget_collection, widget);
これは明らかに次のように拡張できます。
widget_collection.erase_remove_if(widget, pred);
等...