2014-09-16 4 views
2

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

На overview page, я узнал, что unordered_set_of делает bimap себя как HashMap. Однако я не могу изменять значения после их вставки.

ответ

0

Я перешел на два контейнера 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; 
Смежные вопросы