我有一个多集Bimap,看起来像:
6 <--> 71
6 <--> 71
6 <--> 71
8 <--> 71
8 <--> 71
10 <--> 71
10 <--> 74
element =左键+右键,或以上代码块中的一行
我想删除这些行与另一行等效的元素,例如,我想删除6个<-> 71中的两个。基本上,每个bimap元素必须是唯一的< / strong>。对于我的用例,左右键必须是多组。 我也想做这篇创建bimap的帖子。是否有一个内置功能要求每个元素都是唯一的?如果不是这种情况,有人知道这样做的好方法吗?
我正在使用的最小代码如下:
typedef boost::bimap<boost::bimaps::multiset_of<int>,
boost::bimaps::multiset_of<int>> bimap;
bimap bm;
//fill with elements from two vectors
//vectors have the same size by definition
for(int j = 0; j < matching1.size(); j++){
bm.insert({matching1[j],matching2[j]});
}
答案 0 :(得分:0)
是的。您可以使用third parameter of bimap
约束整个集合。
typedef boost::bimap<boost::bimaps::multiset_of<int>,
boost::bimaps::multiset_of<int>,
boost::bimaps::set_of_relation<>
> bimap;
如果要首先构造具有重复对的双图,请使用原始定义。您可以从第一个Bimap初始化第二个Bimap,例如
typedef boost::bimap<boost::bimaps::multiset_of<int>,
boost::bimaps::multiset_of<int>
> bimap;
typedef boost::bimap<boost::bimaps::multiset_of<int>,
boost::bimaps::multiset_of<int>,
boost::bimaps::set_of_relation<>
> unique_bimap;
bimap data = { ... };
unique_bimap uniqued_data { data.begin(), data.end() };