我想创建一个数据结构来描述帖子和标签之间的关系。每个帖子可以有多个标签,一个标签可以应用于多个帖子。
每个帖子和标签都可以由一个键唯一标识(比如说int
)。
我希望能够有效地获取给定帖子的所有标签以及给定标签的所有帖子。
我想从如下所示的代码中移出:
unordered_map<int, vector<int> > post_to_tags;
unordered_map<int, vector<int> > tags_to_post;
到boost::bimap
. 我试过这个:
typedef bimap<
unordered_multiset_of<int>,
unordered_multiset_of<int>,
unconstrained_set_of_relation
> BimapType;
BimapType bm;
如果没有unconstrained_set_of_relation
bimap,则允许多次插入相同的(帖子、标签)对(因为它使用多重集作为关系)。由于unconstrained_set_of_relation
我无法弄清楚如何将元素插入此容器(没有定义插入)。
- 可以
boost::bimap
描述这种关系吗? - 如何进行插入?
- 对于这种情况,Boost.MultiIndex 是更好的选择(更易于使用/高效)吗?