插入具有多对多关系的boost bimap

发布于 2024-12-24 00:18:03 字数 839 浏览 1 评论 0原文

我想创建一个数据结构来描述帖子和标签之间的关系。每个帖子可以有多个标签,一个标签可以应用于多个帖子。

每个帖子和标签都可以通过一个键来唯一标识(假设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 我无法弄清楚如何将元素插入到此容器中(没有定义插入)。

  1. boost::bimap 可以描述这种关系吗?
  2. 如何进行插入呢?
  3. 对于这种情况,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).

  1. Can boost::bimap describe this relationship at all?
  2. How can insert be performed?
  3. Is Boost.MultiIndex a better choice (easier to use/efficient) for this case?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文