pair作为unordered_map的key报错

问题

pair作为unordered_map的key报错,编译时会报错

原因

因为pair没有哈希函数

解决方法

定义哈希函数

cpp 复制代码
template <typename T>
inline void hash_combine(std::size_t &seed, const T &val) {
    seed ^= std::hash<T>()(val) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
}
// auxiliary generic functions to create a hash value using a seed
template <typename T> inline void hash_val(std::size_t &seed, const T &val) {
    hash_combine(seed, val);
}
template <typename T, typename... Types>
inline void hash_val(std::size_t &seed, const T &val, const Types &... args) {
    hash_combine(seed, val);
    hash_val(seed, args...);
}

template <typename... Types>
inline std::size_t hash_val(const Types &... args) {
    std::size_t seed = 0;
    hash_val(seed, args...);
    return seed;
}

struct pair_hash {
    template <class T1, class T2>
    std::size_t operator()(const std::pair<T1, T2> &p) const {
        return hash_val(p.first, p.second);
    }
};

使用

cpp 复制代码
unordered_map<pair<long long, long long>, long long, pair_hash> slopeCount;
相关推荐
Cosmoshhhyyy6 小时前
LeetCode:3083. 字符串及其反转中是否存在同一子字符串(哈希 Java)
java·leetcode·哈希算法
Lenyiin8 小时前
01.01、判定字符是否唯一
算法·哈希算法
学习溢出1 天前
【网络安全】John the Ripper 散列密码,PDF密码
安全·网络安全·pdf·哈希算法
eternal__day1 天前
数据结构(哈希表(中)纯概念版)
java·数据结构·算法·哈希算法·推荐算法
青春男大3 天前
java哈希存储--数据结构
java·开发语言·数据结构·学习·算法·eclipse·哈希算法
sc写算法4 天前
Hash 映射
数据结构·算法·哈希算法
运维&陈同学4 天前
【Elasticsearch05】企业级日志分析系统ELK之集群工作原理
运维·开发语言·后端·python·elasticsearch·自动化·jenkins·哈希算法
Psycho_MrZhang5 天前
常见的数据结构和应用场景
数据结构·算法·哈希算法
楠木s6 天前
JNDI基础
java·开发语言·网络攻击模型·哈希算法·安全威胁分析
从以前7 天前
哈希表查找:Python 实现与性能解析
算法·哈希算法·散列表