[英]How to find out the specific algorithm my C++ compilers use for std::hash?
我有一个以前仅用于 Mac 的代码,它使用std::hash<std::string>
[1] 生成校验和。 现在此代码已移植到 Windows。 Mac 版本使用 CLANG,Windows 端口使用 GCC g++ 编译。 正如预期的那样( std::hash
依赖于实现),两个编译器的结果不同:
# Windows: g++.exe (Rev2, Built by MSYS2 project) 9.2.0
std::hash("hello world"): 5577293430985752569
# Mac: Apple clang version 11.0.3 (clang-1103.0.32.29)
std::hash("hello world"): 12386028635079221413
如何找出我的编译器使用的算法?
我能想到的唯一解决方案是探测一些测试字符串上的所有哈希函数实现,看看哪些匹配......
当然,对此的长期方法是在两个端口中使用相同的加密散列函数。 但目前无法重新计算 Mac 版本迄今为止创建的所有校验和,并且必须通过 Windows 端口进行验证。
std::hash
用于此任务是一个糟糕的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.