根据 C++ 标准,散列函数 std::tr1::hash 计算范围为 64 位的散列值(如果我错了请纠正我)。但出于好奇,是否有任何机制可以生成范围大于 64 位的哈希值。我的问题可能看起来很奇怪,因为我们使用的整个内存都在 64 位范围内,但我想知道我们如何计算(比方说)大小为 80 位的哈希值?
编辑: 糟糕的是,我假设了 64 位实现。
最佳答案
C++11 中的各种哈希函数(我想对应
到 TR1) 将散列值计算为 size_t
,其中的大小
取决于实现(但对于 32 位将是 32 位
构建,64 位用于 64 位构建)。如果你需要一个散列
较大的尺寸,则必须自己计算;你
甚至可能必须定义一个更大的整数类型来支持
计算它。 (你不能返回一个 80 位的哈希码
如果 size_t
仅为 64 位,则为 size_t
。)
关于c++ - 索引大于 64 位的哈希函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19502208/