Недавно я увидел, что у Boost есть реализация двунаправленной карты с именем bimap.
Моя первоначальная карта STL использовала следующие 2 типа:
int
как тип ключаstd::weak_ptr<void>
как тип значения (давайте назовем это X
)Чтобы создать bimap с этими типами, объявление будет выглядеть примерно так:
boost::bimap<int, boost::bimaps::set_of<X, std::owner_less<X>>>
поскольку std::weak_ptr
требуется меньше оператора (предоставляется std::owner_less
) и связан с типом boost::bimaps::set_of
быть пригодным для использования (если я правильно понял).
Я хочу мое int
введите ключ с карты, чтобы указать на несколько значений типа X
,
Для стандартной карты изменение типа значения с X
в std::list<X>
было бы хорошо, как в:
std::map<int, std::list<X>>
Как можно определить двунаправленную карту (или что можно использовать), чтобы представление правой карты интерпретировалось как map<X,int>
(сплющив списки X
), в то время как правильный map<int,list<X>>
?
Задача ещё не решена.