将许多值映射到boost :: unordered_map中的单个键?

时间:2013-12-27 15:51:29

标签: c++ boost unordered-map

我没有看到将多个值映射到boost::unordered_map中的一个键的方法。我的地图被声明为:

boost::unordered_map< uint16_t, Myclass* > myMap_;

我想我可以通过在容器中存储MyClass的对象来实现这一点,即:

boost::unordered_map< uint16_t, vector<Myclass*> > myMap_;

然而,unordered_map提供了管理负载因子大小的含义,因此我想知道它是否真的不能或也许它可以某种方式将多个值绑定到一个键

float max_load_factor() const;

返回:返回当前的最大加载因子。

void max_load_factor(float z);

效果:使用z作为提示更改容器的最大加载因子。

size_type bucket_size(size_type n) const;

要求:n&lt; BUCKET_COUNT() 返回:存储桶n中的元素数。


我知道我可以使用multimap

typedef boost::unordered_multimap< int, MyClass*, MyHash<int> > HashMMap;

但是我想知道使用unordered_map是否可能以某种方式为单个键设置多个值。

1 个答案:

答案 0 :(得分:2)

来自C ++11§23.2.5无序关联容器

  

无序关联容器支持唯一键,如果每个键最多可包含一个元素。否则,它支持等效键。 unordered_setunordered_map支持唯一键。 unordered_multisetunordered_multimap支持等效密钥。

如果您需要多个值,则需要使用多图(​​C ++ 11或来自boost),或将容器存储为值。普通的unordered_map不会这样做。