1
A
のオブジェクトを格納するstd::unordered_set
があるとします。ここでは、与えられたcondition
を満たすオブジェクトのサブセットを削除し、サブセット内の各オブジェクトに別の関数を適用したいと考えています。これを行うための最良の(またはエレガントな)方法は何ですか?stdアルゴリズムを使用してコンテナからオブジェクトを削除する
一つの可能な解決策は、することができます:
std::unordered_set<A> myset;
//.. initialize data
std::for_each(myset.begin(), myset.end(), [](A&) { if(condition(A)) { /*do something on A*/} });
auto itrs = std::remove_if(myset.begin(), myset.end(), [](A&) {return condition(A)});
myset.erase(itrs, myset.end());
明らかに上記の溶液は、2段階の関数呼び出しが必要です。これを単純化する方法はありますか?
私はあなたのものを 'remove_if'の述語で行うことを提案しようとしていました。しかし、あなたはできません。とても簡単だったでしょうか... –