哈希表

哈希表相关的一些笔记

哈希表

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

哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素,可以快速判断一个元素是否出现在集合里。

哈希函数

把数据映射为索引,对数值取模保证一定映射到哈希表。

哈希碰撞

映射到同一下标的解决方法。

拉链法:发生冲突的元素储存在链表中。

线性探测法:要保证空间比数据大,向下找空置位置放置冲突元素。

常用的哈希结构

  • 数组

  • 集合set:不可更改数值

    set:红黑树实现,有序,数值不重复

    multiset:红黑树实现,有序,数值可重复

    unordered_set:哈希表实现,无序,数值不可重复

使用集合解决哈希问题时优先用unordered_set,需要有序则用set,有序且重复用multiset

  • 映射map

    map:红黑树实现,key有序不可重复不可修改

    multimap:红黑树实现,key有序可重复不可修改

    unodered_map:哈希表实现,key无序不可重复不可修改

判断一个元素是否出现过的场景应该使用哈希法。