索引大于64位的哈希函数?

时间:2013-10-21 18:41:05

标签: c++ memory hash hashcode tr1

从C ++标准来看,散列函数std :: tr1 :: hash计算范围为64位的散列值(如果我错了,请纠正我)。但出于好奇,有没有任何机制可以生成范围大于64位的哈希值。我的问题可能看起来很奇怪,因为我们使用的整个内存都在64位范围内,但我想知道我们如何计算(比方说)大小为80位的哈希值?

编辑:我的错,我假设64位实现。

1 个答案:

答案 0 :(得分:3)

C ++ 11中的各种哈希函数(我想这是对应的) 到TR1)将哈希值计算为size_t,其大小 取决于实现(但对于32位将是32位 构建,64位构建64位)。如果你需要哈希 更大的尺寸,你必须自己计算;您 甚至可能必须定义一个更大的整数类型来支持 计算它。 (您不能返回80位哈希码 如果size_t仅为64位,则size_t。)