在C++中,如何在C中从头开始创建哈希图?
需要考虑哪些参数,以及如何测试hashmap?如中所示,在您可以说您的hashmap已经完成之前,您将运行哪些基准测试用例?
在C++中,如何在C中从头开始创建哈希图?
需要考虑哪些参数,以及如何测试hashmap?如中所示,在您可以说您的hashmap已经完成之前,您将运行哪些基准测试用例?
如果你知道它们背后的基本原理,应该不会太难.
通常,您会创建一个名为"bucket"的数组,其中包含键和值,并带有一个可选指针来创建一个链表.
当您使用一个键访问哈希表时,您将使用一个自定义哈希函数处理该键,该函数将返回一个整数.然后取结果的模,即数组索引或"bucket"的位置.然后将未保存的密钥与存储的密钥进行判断,如果匹配,则找到了正确的位置.
否则,您会遇到"冲突",必须在链接列表中爬行并比较关键点,直到匹配为止.(注意,有些实现使用二叉树而不是链表来进行冲突).
查看这个快速哈希表实现: