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;
相关推荐
福大大架构师每日一题19 小时前
Redis 8.10.0 正式发布:紧凑哈希、批量导入、备份恢复、流与时序能力全面升级
数据库·redis·哈希算法
圣殿骑士-Khtangc2 天前
Go-Map面试核心考点从哈希冲突到并发安全的完整解析
面试·golang·哈希算法
爱跳舞的烤冷面3 天前
自学嵌入式第22天(数据结构——哈希)
数据结构·算法·哈希算法
Tisfy4 天前
LeetCode 3731.找出缺失的元素:哈希 / 排序
算法·leetcode·哈希算法·排序·哈希表
cvby4 天前
C++哈希
c++·哈希算法·散列表
没落之王4 天前
没落之王破天象,易学当兴
大数据·人工智能·哈希算法·可用性测试
Sagittarius_A*5 天前
哈希与认证基础(一):哈希函数的安全目标:原像、第二原像与碰撞
算法·安全·信息安全·密码学·哈希算法
砚凝霜6 天前
软考网络工程师|第 6 章 密码学、哈希、数字签名、数字证书 PKI 完整备考笔记
笔记·密码学·哈希算法
@Mike@6 天前
07-数据库学习笔记(数据库哈希表)
数据库·哈希算法·散列表
油丶酸萝卜别吃6 天前
encrypt.js — 前端密码哈希工具说明文档
前端·javascript·哈希算法