c++ - 为什么 C++ 哈希函数的返回类型是 std::size_t,而不是平台无关类型?

标签 c++ hash

如图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/

相关文章:

c++ - 在 C++ 中通过指向其字节表示的指针修改对象有什么限制?

c++ - Typedef 循环依赖

c++ - c++中的图像哈希,具有相似的图像特征

java - 如何检测列表是否已更改?

javascript - 使用 javascript 检查 url 中的数字?

c++ - 根据 MSVC,具有 volatile 成员的结构不再是 POD

c++ - 关于 QGraphicsView 中图像平铺的问题

c++ - 在 C++ Windows 应用程序中捕获按下的键

python - 与 Python 3.1 文档相反,hash(obj) != id(obj)。那么哪个是正确的?

ruby - 哈希到数组转换