我有一个boost unordered_map容器(mymap),我想删除一些预测器为它们返回true的键。
boost::range::remove_if(mymap, ((boost::bind(&mesh::type, (boost::bind(&map_type::value_type::first, _1)))) == EDGE) );
mesh :: type定义如下:
class mesh
{
...
Type type() const;
...
}
和" EDGE"是" Type enum"之一。
这是我得到的错误:
error: non-static const member ‘const mesh std::pair<const mesh, std::vector<std::vector<Point> > >::first’, can’t use default assignment operator
我使用boost版本1.53和C ++ 03。
答案 0 :(得分:2)
// define this, either as a static member function or in a
// private namespace...
bool is_edge(const map_type::value_type& vt)
{
// note: concerned with the key, not the data
return vt.first.type() == EDGE;
}
// ... and avoid all the unreadable bind nastiness completely
boost::range::remove_if(mymap, is_edge);