我没有找到一种将多个值映射到 boost::unordered_map
中的一个键的方法。 。我的 map 声明为:
boost::unordered_map< uint16_t, Myclass* > myMap_;
我认为我可以通过将 MyClass 的对象存储在容器中来实现这一点,即:
boost::unordered_map< uint16_t, vector<Myclass*> > myMap_;
然而 unordered_map 提供了管理负载因子大小的含义,因此我想知道它是否真的不能或者也许它可以以某种方式将多个值绑定(bind)到一个键?
float max_load_factor() const;
返回:返回当前最大负载系数。
void max_load_factor(float z);
效果:更改容器的最大负载系数,使用 z 作为提示。
size_type bucket_size(size_type n) const;
要求:n 我知道我可以使用多重 map 但是我想知道使用 unordered_map 是否可以以某种方式为单个键提供多个值。
typedef boost::unordered_multimap< int, MyClass*, MyHash<int> > HashMMap;
最佳答案
来自 C++11 §23.2.5 无序关联容器
An unordered associative container supports unique keys if it may contain at most one element for each key. Otherwise, it supports equivalent keys.
unordered_set
andunordered_map
support unique keys.unordered_multiset
andunordered_multimap
support equivalent keys.
如果您想要多个值,则需要使用多重映射(C++11 或来自 boost),或将容器存储为值。普通的 unordered_map
无法做到这一点。
关于c++ - 将许多值映射到 boost::unordered_map 中的单个键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20803575/