увеличить BIMAP со вторым типом в виде списка, выравнивая вид карты справа

Недавно я увидел, что у Boost есть реализация двунаправленной карты с именем bimap.

Моя первоначальная карта STL использовала следующие 2 типа:

  • int как тип ключа
  • std::weak_ptr<void> как тип значения (давайте назовем это X)

Сценарий 1

Чтобы создать bimap с этими типами, объявление будет выглядеть примерно так:

boost::bimap<int, boost::bimaps::set_of<X, std::owner_less<X>>>

поскольку std::weak_ptr требуется меньше оператора (предоставляется std::owner_less) и связан с типом boost::bimaps::set_of быть пригодным для использования (если я правильно понял).

Сценарий 2

Я хочу мое int введите ключ с карты, чтобы указать на несколько значений типа X,

Для стандартной карты изменение типа значения с X в std::list<X> было бы хорошо, как в:
std::map<int, std::list<X>>

Как можно определить двунаправленную карту (или что можно использовать), чтобы представление правой карты интерпретировалось как map<X,int> (сплющив списки X), в то время как правильный map<int,list<X>>?

1

Решение

Задача ещё не решена.

Другие решения