目前Boost具有hash_combine函数,该函数输出32位无符号整数(确切地说,size_t).一些参考:
http://www.boost.org/doc/libs/1_43_0/doc/html/hash/reference.html#boost.hash_combine
http://www.boost.org/doc/libs/1_43_0/doc/html/hash/combine.html
我想探讨如何创建64位版本的hash_combine.
第一件事是获得64位的黄金比例或任何其他无理数.
第二部分是使用轮班.这部分相当棘手,我想询问是否有最佳实践或指导使用转移来获取哈希值?或者像原始代码一样选择班次:
seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
Run Code Online (Sandbox Code Playgroud)
是随机的?
另外如何评估输出hash_combine以确保它不会产生比原始哈希函数更多的冲突hash_value?