C++ 使用 std::bitset 组合哈希函数

标签 c++ hash

我最近发现了一个博客https://worldengineer.me/2015/02/08/combining-container-hashes-with-c14-metaprogramming-cure-for-insomnia-1729/

作者通过将两个哈希值简化为其 std::bitset 表示形式并连接位集并查找组合位集的哈希值来组合两个哈希值。

虽然这篇文章的动机可能是介绍 c++ 14 功能,但我想知道这种方法与纯粹基于抗碰撞性的 boost hash_combine 函数相比有多好?

编辑:

我的意思是,与 boost 库的 hash_combine 方法相比,它在避免冲突方面表现如何?从性能角度来看,这是一个不错的选择,尽管我认为上述方法不会比 hash_combine 方法花费更长的时间。

我并没有对此进行任何认真的开发,只是四处探索,所以只是想知道该方法的优点。

最佳答案

我会这么说

  • 四处探索并发现新东西很有趣(使用 std::bitset 自己动手),
  • 但在认真的开发中,更喜欢使用像 boost 这样的库,这样可以加快开发速度并避免错误。此外,该库是开源的,已由数百名专业人士开发和阅读。

关于C++ 使用 std::bitset 组合哈希函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40088609/

相关文章:

c++ - GDB 可以调试 C++ lambdas 吗?

C++14 尽管删除了复制构造函数,函数仍返回对象数组

c++ - 如何在 C 中 stub 套接字?

ruby - 比较哈希数组并打印预期结果和实际结果

hash - 为什么java hashCode()中经常使用XOR,而其他按位运算符却很少使用?

c++ - 如何释放从 native 代码发送回 Java 的 jstring?

c++ - 哪个头文件包含 DirectX 12 中的 ThrowIfFailed()

database - 分布式 LSH(局部敏感哈希)

ruby-on-rails - 渲染 json 中的哈希火箭与冒号 :

php - 比较 MySQL 中的字符串是否容易受到定时攻击?