我刚刚开始学习哈希表,到目前为止,我知道你把你想要哈希的对象通过一个哈希函数,然后使用它返回的索引来得到你想要的对应对象。虽然有些事情我不明白:
您使用什么结构来存储对象,以便您可以使用哈希函数返回的代码快速索引它们?我唯一能想到的就是使用一个数组,但是要处理所有的键,你必须分配一个 9999999999999 个元素大或类似的东西。或者它是否像遍历链表或其他东西一样简单,并将每个元素中的 ID 与该哈希函数中的键进行比较?如果是这样,那似乎有点低效,不是吗?
最佳答案
通常,您使用数组(或类似于 vector 的东西)。你选择一个合理的大小(例如,比你期望的项目数量大 20%)和一些解决冲突的方法,当/如果两个键产生相同的哈希值(例如,每个位置都是链表的头部)散列为该值的项目)。
关于c++ - 索引哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3134738/