如图here , 标准库中提供的std::hash
模板会返回一个std::size_t
类型的值。然而,std::size_t
的确切类型依赖于平台和实现,因此无法估计碰撞概率。
我看不出返回 std::size_t
有什么好处,所以我的问题是,为什么哈希函数不返回固定类型的值?
最佳答案
std::hash
的预期目的是实现哈希表,特别是标准库的无序关联容器。哈希表是一个数组,std::size_t
是一个合适的选择,因为它是保证能够表示任何数组的所有索引的类型。虽然标准实际上并未指定,但实际上这些标准容器可能会使用 std::size_t
作为大小类型。
如果您需要用于系统间通信的哈希函数,std::hash
不是一个好的选择。
关于c++ - 为什么 C++ 哈希函数的返回类型是 std::size_t,而不是平台无关类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57888281/