#pragma once #include<unordered_set> #include<unordered_map> namespace hash_function { //将参数传入 template<typename... Types> inline size_t hash_val(const Types&...args) { size_t seed = 0; hash_val(seed, args...); return seed; } //将参数进行分解 template<typename T, typename... Types> inline void hash_val(size_t& seed, const T& val, const const Types&...args) { hash_combine(seed, val); hash_val(seed, args...); return seed; } //函数递归的出口,即参数最终分解为一个 template<typename T> inline void hash_val(size_t& seed, const T& val) { hash_combine(seed, val); } //计算对应的哈希码 template<typename T> inline void hash_combine(size_t& seed, const T& val) { seed ^= std::hash<T>(val) + 0x9e3779b9 + (seed << 9) + (seed >> 2); } }
标签:hash,template,val,C++,注释,seed,哈希,const,size From: https://www.cnblogs.com/Mexcellent/p/17638102.html