从boost unordered_map中删除特定键

时间:2015-07-02 12:39:23

标签: c++ boost

我有一个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。

1 个答案:

答案 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);