【发布时间】:2020-08-26 23:27:53
【问题描述】:
如何在 unordered_map 中使用变体作为键?
例如,我想让下面的代码工作。
using VariantType = std::variant<int, std::string, unsigned int>;
std::unordered_map<VariantType, int, $some_hash_function$> m;
如何实现 $some_hash_function$?
【问题讨论】:
-
这是利息,不是渣。为什么以 Gobo Fraggle 的名义你想要多种类型的键?那一定是一个奇怪的用例。
-
“一个
vector的变体”在哪里? -
等等,变量en.cppreference.com/w/cpp/utility/variant/hash 已经有一个哈希值所以也许你根本不需要第三个参数。所有文档都说变体中的每个项目都必须有一个哈希函数——而你的就是这样。它在没有第三个参数的情况下编译,如果散列函数不存在,则不会编译。我只是用没有哈希的东西试了一下,但它没有用,所以我很肯定你不需要第三个参数。
-
闻起来像XY problem。
-
@JerryJeremiah 观点的演示:godbolt.org/z/db849x 看起来你不必做傻事。顺便说一句,杰瑞,不妨将这条评论正式化为答案。
标签: c++ unordered-map variant