关闭页面特效

有关C++哈希函数的常用形式,具体解释见注释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#pragma once
#include<unordered_set>
#include<unordered_map>
namespace hash_function {
    //计算对应的哈希码
    template<typename T>
    inline void hash_combine(size_t& seed, const T& val) {
        seed ^= std::hash<T>()(val) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
    }
    //函数递归的出口,即参数最终分解为一个
    template<typename T>
    inline void hash_val(size_t& seed, const T& val) {
        hash_combine(seed, val);
    }
    //将参数进行分解
    template<typename T, typename... Types>
    inline void hash_val(size_t& seed, const T& val,const Types&...args) {
        hash_combine(seed, val);
        hash_val(seed, args...);
        return seed;
    }
    //将参数传入
    template<typename... Types>
    inline size_t hash_val(const Types&...args) {
        size_t seed = 0;
        hash_val(seed, args...);
        return seed;
    }
 
}

  

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

__EOF__

作  者Mexcellent
出  处https://www.cnblogs.com/Mexcellent/p/17638102.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

posted @   Mexcellent  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
0
0
关注
跳至底部
点击右上角即可分享
微信分享提示