【发布时间】:2011-10-23 21:09:58
【问题描述】:
我想删除我的 std::map 中的一些元素。
我编写了擦除 + remove_if 技术,我总是使用其他序列容器。
但它不是用地图编译的。为什么?
我该如何做这份工作?
std::map<int, int> m;
bool foo(const std::pair<int, int>& p)
{
return p.second > 15;
}
int _tmain(int argc, _TCHAR* argv[])
{
m.insert(make_pair(0, 0));
m.insert(make_pair(1, 10));
m.insert(make_pair(2, 20));
m.insert(make_pair(3, 30));
m.erase(
remove_if(m.begin(), m.end(), foo),
m.end()); // compile error
return 0;
}
【问题讨论】:
-
remove_if 不适用于关联容器。看到stackoverflow.com/q/800955/346366你会找到一个等价物
标签: c++ algorithm stl map containers