Как я могу использовать boost :: bimap неупорядоченным и изменяемым способом?

Я ищу двунаправленную неупорядоченную карту. В настоящее время у меня просто есть это. Проблема в том, что я не могу использовать [], То, что я думаю, — то, что повышение по умолчанию перечисляет типы. Но я хочу хэш-карту. Как это возможно?

#include <string>
#include <boost/bimap.hpp>

boost::bimap<std::string, size_t> indices;
// ...
size_t index = 42;
indices.right[index].second = "name"; // This doesn't work.

На обзорная страница, я узнал что unordered_set_of заставляет bimap вести себя как hashmap. Однако я не могу изменить значения после вставки.

2

Решение

Я переключился на два std::unordered_map контейнеры. Недостатком является то, что вы должны вручную синхронизировать оба. С другой стороны, это было гораздо более практичным для меня, так как код Boost стал очень многословным.

#include <string>
#include <unordered_map>

std::unordered_map<std::string, size_t> indices;
std::unordered_map<size_t, std::string> names;
// ...
size_t index = 42;
std::string name = "John";
indices[name] = index;
indices[index] = name;
0

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