在C ++中使用哈希将字映射到整数

时间:2015-04-24 06:03:28

标签: c++ hash

是否有一致且广泛使用的包用于将字符串映射到整数?我正在使用一个数据集(维基百科),它可能有25亿字,并且想要一种可靠而快速的方法将单词映射到唯一的整数标识符。

1 个答案:

答案 0 :(得分:2)

您没有提到您愿意接受的碰撞概率。使用完美的64位哈希,你的250万个单词中有10 ^ -6的碰撞几率。这是在64位系统上使用std::hash获得的最佳效果。如果这还不够,你必须使用更大的哈希,如MD5(128位和10 ^ -26碰撞机会)或SHA-1(160位和10 ^ -35碰撞机会)。碰撞的可能性还取决于散列函数的质量。你应该使用一个众所周知的加密哈希,比如MD5或SHA-1,这可能与你的速度要求相矛盾。