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

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

以下命令在 2 台 PC 上为 hashed_data 产生不同的结果。一个使用 Visual Studio 2010,另一个使用 Visual Studio 2013。Hash 通常应该使用相同的输入给出相同的结果

hash<string> hash_func;
unsigned long long hashed_data = (unsigned long long)hash_func("dogcat");

电脑用VS 2010结果6824943158688951155

有VS 2013结果的电脑14899951770080783754

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

最佳答案

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

关于c++ hash 在具有相同输入的 VS 2010 和 VS 2013 上返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32697099/

相关文章:

c++ - 函数变量而不是指向函数的指针

c++ - 从数组中输出特定值并获取正确的值

c++ - Visual Studio 2013 'explicit' 关键字错误?

c++ - Visual Studio 上的 AWS C++ SDK 链接器错误

c++ - 专用于私有(private)成员类的 std::hash

c++ - 如何将新函数添加到其实现在 C++ 中不可访问的类

c# - 如何在filewatcher中更新文件名

visual-studio - 在visual studio中如何使用键盘在文本编辑器中选择单词

c# - 如何在sql查询中添加两个字符串?

c# - 来自 NuGet 的 Unity Bootstrapper 在 App_Start 上抛出错误