在使用容器时,为了提高效率,建议使用算法和成员函数。但是,关联容器(unordered_map)不适用于擦除(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;
}
}
//根据 Scott Meyers 有效 STL pg45
这是否尽可能高效?似乎应该有一个更好的方法来使用像擦除(remove_if)范例这样的东西来做到这一点,但它适用于unordered_map(我知道关联容器不能“重新排序”,因此不支持remove_if算法) . 这真的是使用谓词从 unordered_map 中删除条目的最佳方法吗?有什么建议么?
先感谢您。