2

我正在寻找一个双向无序地图。目前,我只有这个。问题是,我不能使用[]. 我认为 boost 默认为列表类型。但我想要一个哈希图。这怎么可能?

#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。但是,一旦插入,我就无法修改值。

4

1 回答 1

1

我切换到两个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;
于 2014-09-17T10:52:58.300 回答