コンテナーを操作するときは、ループよりも効率的にアルゴリズムとメンバー関数を使用することをお勧めします。ただし、連想コンテナー (unordered_map) は、erase(remove_if) パラダイムでは機能しません。一般的な方法は、ループに戻ることです。
uom は std::unordered_map です
for(auto it = uom.begin() ; it!=uom.end(); ){
if(it->second->toErase()) {
delete it->second; // omit delete if using std::unique_ptr
fpc.erase(it++);
}else{
++it;
}
}
//スコット・マイヤーズ有効STL pg45による
これは可能な限り効率的ですか?erase(remove_if) パラダイムのようなものを使用してこれを行うためのより良い方法があるはずですが、それは unordered_map で機能するはずです (連想コンテナーは「再注文」できないため、remove_if アルゴリズムがサポートされていないことを理解しています) . これは本当に、述語を使用して unordered_map からエントリを消去する最良の方法ですか? 助言がありますか?
前もって感謝します。