为什么我不能编译一个以pair为key的unordered_map?
这里面临的问题是缺乏合适的哈希函数对于密钥类型。要解决此问题,请为密钥对提供自定义哈希函数。这是一个示例:
#include <unordered_map> #include <functional> #include <string> #include <utility> struct pair_hash { template <class T1, class T2> std::size_t operator() (const std::pair<T1,T2>& p) const { auto h1 = std::hash<T1>{}(p.first); auto h2 = std::hash<T2>{}(p.second); return h1 ^ h2; // Simple example, for better results use boost.hash_combine } }; using Vote = std::pair<std::string, std::string>; using Unordered_map = std::unordered_map<Vote, int, pair_hash>;
使用此自定义哈希函数,您现在可以创建一个 unordered_map
以上是为什么我不能使用 `std::pair` 作为 `std::unordered_map` 中的键以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!