插入具有多对多关系的boost bimap
我想创建一个数据结构来描述帖子和标签之间的关系。每个帖子可以有多个标签,一个标签可以应用于多个帖子。
每个帖子和标签都可以通过一个键来唯一标识(假设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 是更好的选择(更易于使用/高效)吗?
I'd like create a data structure that will describe a relation between posts and tags. Each post can have multiple tags and a tag can be applied to many posts.
Each post and tag can be uniquely identified by a key (let's say int
).
I want to be able to efficiently get all the tags for a given post and all the posts of a given tag.
I want to move from a code that looks like this:
unordered_map<int, vector<int> > post_to_tags;
unordered_map<int, vector<int> > tags_to_post;
to boost::bimap
. I've tried this:
typedef bimap<
unordered_multiset_of<int>,
unordered_multiset_of<int>,
unconstrained_set_of_relation
> BimapType;
BimapType bm;
Without the unconstrained_set_of_relation
the bimap would allow to insert the same (post, tag) pair more than once (since it uses a multiset for the relation). With the unconstrained_set_of_relation
I am unable to figure out how to insert elements into this container (there's no insert defined).
- Can
boost::bimap
describe this relationship at all? - How can insert be performed?
- Is Boost.MultiIndex a better choice (easier to use/efficient) for this case?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论