c ++ hash在VS 2010和VS 2013上使用相同的输入返回不同的结果

时间:2015-09-21 13:54:53

标签: c++ visual-studio-2010 visual-studio-2013 hash

以下命令在2台PC上为hashed_data生成不同的结果。一个使用Visual Studio 2010和另一个Visual Studio 2013.哈希通常应该使用相同的输入

给出相同的结果
hash<string> hash_func;
unsigned long long hashed_data = (unsigned long long)hash_func("dogcat");

VS 2010的计算机结果为6824943158688951155

VS 2013的计算机结果为14899951770080783754

其他输入在两台PC之间产生不同的结果。

1 个答案:

答案 0 :(得分:1)

总是很难回答否定的问题,但这里的基本答案是存在标准库的多个实现。就标准中记录的情况而言,它们的行为非常非常相似,但没有记录确切的哈希值。这为实施优化留出了空间。由于更智能的散列函数可以导致更高效的散列表,因此可以预期散列函数不同。