【发布时间】:2020-03-09 15:46:58
【问题描述】:
我想使用带有结构{int, int, string} 和整数的联合作为 unordered_map 的键。执行此操作的最佳做法是什么?散列是如何工作的,是否需要自定义散列?
struct nodeinfo {
int a;
int b;
string c;
};
union key{
nodeinfo structKey;
int intKey;
};
unordered_map<key, int> Map;
我想坚持使用 C++11,所以不能使用变体。
【问题讨论】:
-
我不确定您打算如何为您的
key类型实现相等比较或散列,因为没有关于哪个成员处于活动状态的信息。 What is the correct way to check equality between instances of a union? 的可能重复项。 -
std::variant有多种实现可用于 C++11,例如:github.com/mpark/variant。
标签: c++ stl std unordered-map