侯捷C++万用的hash function

课程中提供的,hash_val函数,输入参数为类的全部数据,返回值为std:stze_t的哈希值
侯捷C++万用的hash function侯捷C++万用的hash function

1  
 2 template<class T>
 3 inline  void  hash_combine(std::size_t & seed, const T & val){
 4     seed ^= hash<T>()(val)+0x9e3779b9 + (seed << 6) + (seed >> 2);
 5 }
 6 template<class T>
 7 inline  void  hash_val(std::size_t & seed, const T & val){
 8     hash_combine(seed, val);
 9 }
10  
11 template<class T,class ...Types>
12 inline  void  hash_val(std::size_t & seed, const T & val,const Types & ...args){
13     hash_combine(seed, val);
14     hash_val(seed, args...);
15 }
16  
17  
18 template<class ...Types>
19 inline  size_t  hash_val(const Types & ...args){
20     size_t  seed = 0;
21     hash_val(seed, args...);
22     return seed;
23 }

View Code
例如
侯捷C++万用的hash function侯捷C++万用的hash function

1 #include<functional>
 2 
 3 class C
 4 
 5 {
 6 
 7   type1 arg1;
 8 
 9   type2 arg2;
10 
11   type3 arg3;
12 
13 };
14 
15 
16 
17 class CHash
18 
19 {
20 
21 public:
22 
23   std:size_t operator(const C& c) const
24 
25   {
26 
27     return hash_val(c.arg1,c.arg2,c.arg3);
28   }
29 
30 }

View Code

原文链接: https://www.cnblogs.com/ydUESTC/p/15759960.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/183141

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 上午10:20
下一篇 2023年2月12日 上午10:20

相关推荐