Я хотел бы создать структуру данных, которая будет описывать отношения между постами и тегами. Каждое сообщение может иметь несколько тегов, и тег можно применять ко многим сообщениям.
Каждый пост и тег могут быть однозначно идентифицированы по ключу (скажем, 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 позволит вставлять одну и ту же пару (post, tag) более одного раза (поскольку для отношения используется мультимножество) С unconstrained_set_of_relation
я не могу понять, как вставить элементы в этот контейнер (вставка не определена).
- Может ли
boost::bimap
описать это отношение вообще?
- Как можно выполнить вставку?
- Является ли Boost.MultiIndex лучшим выбором (проще / эффективнее) для этого случая?