我想删除std :: map中的一些元素。
我写了erase + remove_if技术,我总是用其他序列容器做。
但它没有与地图编译。为什么?
我该怎么做这份工作?删除std :: map中的特定元素
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](http://stackoverflow.com/q/800955/346366),你会发现一个等效的 – Nelstaar