【发布时间】:2019-12-08 06:15:47
【问题描述】:
下面的链接提到了碰撞的可能性,但我正在尝试使用它来查找重复条目:
http://www.cplusplus.com/reference/functional/hash/
我正在使用std::hash<std::string> 并将返回值存储在 std::unordered_set 中。如果 emplace 失败,我将字符串标记为重复字符串。
【问题讨论】:
-
视情况而定。你想做什么?
-
我想为多个字符串生成哈希值。如果哈希函数返回相同的值,我将其标记为找到重复的字符串。
-
您正在获取任意数量的字符(字节),其长度可能为数百位,并将其减少为 32 位或 64 位整数。是的,对于不同的字符串,会有重复的哈希值。您可以先检查哈希;如果匹配,则比较字符串。
-
C++ 版本不能改变你不能拥有无限不同的有限长度哈希的事实。这是数学。
-
...您还可以期望这些测试运行很长时间。