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