从C ++标准来看,散列函数std :: tr1 :: hash计算范围为64位的散列值(如果我错了,请纠正我)。但出于好奇,有没有任何机制可以生成范围大于64位的哈希值。我的问题可能看起来很奇怪,因为我们使用的整个内存都在64位范围内,但我想知道我们如何计算(比方说)大小为80位的哈希值?
编辑:我的错,我假设64位实现。
答案 0 :(得分:3)
C ++ 11中的各种哈希函数(我想这是对应的)
到TR1)将哈希值计算为size_t
,其大小
取决于实现(但对于32位将是32位
构建,64位构建64位)。如果你需要哈希
更大的尺寸,你必须自己计算;您
甚至可能必须定义一个更大的整数类型来支持
计算它。 (您不能返回80位哈希码
如果size_t
仅为64位,则size_t
。)