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

标签 c++ boost unordered-map

我没有找到一种将多个值映射到 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

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

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

最佳答案

来自 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 and unordered_map support unique keys. unordered_multiset and unordered_multimap support equivalent keys.

如果您想要多个值,则需要使用多重映射(C++11 或来自 boost),或将容器存储为值。普通的 unordered_map 无法做到这一点。

关于c++ - 将许多值映射到 boost::unordered_map 中的单个键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20803575/

相关文章:

c++ - Boost如何在graphviz中写入边的权重?

c++ - 如何阻止 boost::asio 异步读取混淆?

c++ - 有没有办法找出一个类是否是另一个类的直接基础?

c++ - std::unordered_map 如何从桶中返回正确的值

C++ exc_bad_access 从 unordered_map 中指向的对象访问字符串字段

c++ - 对同一对象同时使用 Map 和 List

c++ - 在 Xcode 8.3 更新中,C/C++ 编程 printf 不会给出没有换行符的输出

c++ - 没有临时实例的成员指针的偏移量

c++ - 如何在 Code::Blocks 中使用 wmain() 入口点?

android - 使用多个基类时出现链接错误