我没有看到将多个值映射到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是否可能以某种方式为单个键设置多个值。
答案 0 :(得分:2)
来自C ++11§23.2.5无序关联容器
无序关联容器支持唯一键,如果每个键最多可包含一个元素。否则,它支持等效键。
unordered_set
和unordered_map
支持唯一键。unordered_multiset
和unordered_multimap
支持等效密钥。
如果您需要多个值,则需要使用多图(C ++ 11或来自boost),或将容器存储为值。普通的unordered_map
不会这样做。