如何像 C++ STL 中那样用 C 从头开始创建 Hashmap?
将考虑哪些参数以及如何测试哈希图?例如,在您可以说哈希图完成之前,您将运行哪些基准测试用例?
如果您了解它们背后的基础知识,那么它应该不会太难。
通常,您会创建一个名为“buckets”的数组,其中包含键和值,并带有一个可选的指针来创建链接列表。
当您使用键访问哈希表时,您可以使用自定义哈希函数处理该键,该函数将返回一个整数。然后,您取结果的模数,这就是数组索引或“存储桶”的位置。然后,您使用存储的密钥检查未散列的密钥,如果匹配,则您找到了正确的位置。
否则,就会发生“冲突”,必须遍历链表并比较键,直到匹配为止。 (请注意,某些实现使用二叉树而不是链表来进行冲突)。
查看这个快速哈希表的实现:
https://attractivechaos.wordpress.com/2009/09/29/khash-h/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)