Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
根据 C++ 标准,散列函数 std::tr1::hash 计算范围为 64 位的散列值(如果我错了,请纠正我)。但出于好奇,是否有任何机制可以生成范围大于 64 位的哈希值。我的问题可能看起来很奇怪,因为我们使用的整个内存都在 64 位范围内,但我想知道我们如何计算(比如说)80 位大小的哈希值?
编辑:我的错,我假设是 64 位实现。
C++11 中的各种散列函数(我想对应于 TR1)将散列值计算为 a size_t,其大小取决于实现(但对于 32 位构建将是 32 位,对于 64 位将是 64 位建造)。如果您需要更大尺寸的哈希,则必须自己计算;您甚至可能必须定义一个更大的整数类型来支持计算它。size_t(如果asize_t只有 64 位,则不能在其中返回 80 位哈希码。)
size_t