gpt4 book ai didi

c++ - 如何使用现有的哈希整数来索引哈希表?

转载 作者:行者123 更新时间:2023-11-28 03:44:57 25 4
gpt4 key购买 nike

我目前正在使用 Boost for C++,并尝试使用 CRC32 实现无序映射(又名哈希表)。据我所知,它将一个字符串作为初始键,对其进行哈希处理,然后应用另一个操作,使其适合桶的数量。

虽然在我的情况下,我想预先散列字符串键(在 Boost 中使用单独的 CRC 函数),然后使用该 ID 为表编制索引。我需要帮助的问题是 CRC32 散列有 2^32 个潜在值,我怀疑我是否需要一个包含 2^32 个元素的表。遇到这种情况怎么办?

在此感谢您的帮助!

最佳答案

在基于 C 的语言中使用取模运算符 -- %:

int hashtableIndex = hashValue % hashtableSize;

但请注意,在 C++ 中,结果的符号是“实现定义的”,如果 hashValue 为负,则结果的符号可以为负。因此,在执行 % 操作之前,可能需要关闭 hashValue 中的符号位。

另请注意,如果已知 hashtableSize 是 2 的幂,则可以简单地屏蔽 hashValue 以获取索引:

int hashtableIndex = hashValue & (hashtableSize - 1);

关于c++ - 如何使用现有的哈希整数来索引哈希表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7940771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com