13
与std :: map等效的remove_if
我试图根据特定条件从地图中删除一系列元素。我该如何使用STL算法? 最初我想使用,remove_if但是由于remove_if对于关联容器不起作用,因此无法使用。 是否有适用于地图的“ remove_if”等效算法? 作为一个简单的选择,我想到了遍历映射和擦除。但是在地图上循环并擦除一个安全的选项吗?(因为迭代器在擦除后变得无效) 我使用以下示例: bool predicate(const std::pair<int,std::string>& x) { return x.first > 2; } int main(void) { std::map<int, std::string> aMap; aMap[2] = "two"; aMap[3] = "three"; aMap[4] = "four"; aMap[5] = "five"; aMap[6] = "six"; // does not work, an error // std::remove_if(aMap.begin(), aMap.end(), predicate); std::map<int, std::string>::iterator iter …