2024/12/3 【哈希表】

https://www.programmercarl.com/%E5%93%88%E5%B8%8C%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html#%E5%B8%B8%E8%A7%81%E7%9A%84%E4%B8%89%E7%A7%8D%E5%93%88%E5%B8%8C%E7%BB%93%E6%9E%84

哈希表(Hash table)也称为散列表。

一. 哈希表是什么?

哈希表是根据关键码的值而直接进行访问的数据结构。

数组就是一张哈希表。

二.哈希表用来解决什么问题?

一般哈希表都是用来快速判断一个元素是否出现集合里。

哈希法牺牲了空间换取了时间。

三、哈希函数 (Hash Function)

四、哈希碰撞:

(1)拉链法,

(2)线性探测法:使用线性探测法,一定要保证tableSize大于dataSize。

五、常见的哈希结构:

(1)数组

(2)集合 (set)

 

(3)映射(map)

 当我们要使用集合来解决哈希问题的时候,优先使用unordered_set,因为它的查询和增删效率是最优的,

如果需要集合是有序的,那么就用set,

如果要求不仅有序还要有重复数据的话,那么就用multiset。

六、hash_set,hash_map与unordered_set,unordered_map又有什么关系呢?

实际上功能都是一样一样的, 但是unordered_set在C++11的时候被引入标准库了,而hash_set并没有,所以建议还是使用unordered_set比较好,这就好比一个是官方认证的,hash_set,hash_map 是C++11标准之前民间高手自发造的轮子。

七、如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!

 

posted on 2024-12-03 20:58  axuu  阅读(17)  评论(0)    收藏  举报