具有关联属性的 boost::hash_combine 的替代方案
Alternatives to boost::hash_combine that have associative property?
我正在寻找具有关联属性的hash_combine
函数。
例如,我希望能够一个接一个地组合值 a、b、c、d 以获得序列的哈希键,或者组合 a 和 b,然后是 c 和 d,并组合结果。这两种方法应给出相同的结果。
boost::hash_combine
没有该属性:
// a * b * c * d
std::size_t seed = 0;
boost::hash_combine(seed, 234);
boost::hash_combine(seed, 62);
boost::hash_combine(seed, 675);
boost::hash_combine(seed, 916);
std::cout << seed << std::endl; // 706245846748881
// (a * b) * (c * d)
std::size_t seed1 = 0;
boost::hash_combine(seed1, 234);
boost::hash_combine(seed1, 62);
std::size_t seed2 = 0;
boost::hash_combine(seed2, 675);
boost::hash_combine(seed2, 916);
boost::hash_combine(seed1, seed2); // 11337801211148
有什么好的hash_combine
功能吗?
PS:这样做的原因是我将哈希键分配给我在 DAG 中找到的序列。我正在运行动态编程来查找所有状态对(序列之间的序列)的哈希键。
普通异或怎么样?
std::size_t seed = 0;
seed ^= boost::hash_value(234);
seed ^= boost::hash_value(62);
...
相关文章:
- 运行同一解决方案的另一个项目的项目
- Project Euler问题4的错误解决方案
- 计算每个节点的树高,帮助我解释这个代码解决方案
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- visual c++,如何获取解决方案目录中的代码
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- C++Matching Brackets 2解决方案不起作用
- 在 ubuntu3 上C++ goto 定义有什么解决方案吗16.04?
- C++11 中不同类型的对象的 std::array 的替代方案
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 别名模板的专业化 C++11 中没有开销的最佳替代方案
- 我的固定时间步长与增量时间和插值的解决方案是错误的吗?
- 无法在问题解决方案中执行输出逻辑
- 最大的回文产品 - 程序未运行,编写解决方案但无法理解问题
- 从预序遍历构造 bst 的 c++ 和 python 解决方案之间的区别
- 在一个解决方案中针对第三方静态库 (Creo) 的不同版本(版本)进行构建
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- N-queen问题:无法弄清楚为什么我的解决方案不起作用
- 从排序数组中删除重复项,具有不同代码方式的相同解决方案具有不同的输出