计算密钥的哈希值,并将其除以质数。
通常,对此是否有任何标准素数(例如32/64位)?
我的理解是哈希表不可调整大小/不可调整,其内部数组取决于此。如果我只有5个元素的哈希表,键空间是否会浪费?
编辑:我应该更好地构图。什么是C ++ hash_map(boost)或C#Dictionary中遵循的一般方法
最佳答案
实际上,哈希表的大小可以自动调整。您可能会做的是分配一个大小为N的数组,使用哈希模N(一些质数)来索引该数组。如果您跟踪分配的密度,则当分配的密度超过某个阈值时,您可以分配一个大小为N1(更大的质数)的新数组,并从旧数组中复制每个元素,并使用hash函数新的模数以在新的哈希表中找到其位置。最后,您取消分配旧数组并使用新的更大数组。