抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

哈希表理论基础。


哈希表

  • 哈希表是根据关键码的值而直接进行访问的数据结构。关键码就是数组的索引下标,然后通过下标直接访问数组中的元素。

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

哈希函数

  • 将元素映射到哈希表上,并得到哈希表上该元素的索引,然后就可以通过索引下标快速访问到该元素。

  • 对得到的索引进行取模操作,确保所有元素都在映射表中。

哈希碰撞

  • 多个元素映射到同一个索引位置

  • 拉链法 和 线性探测法

常见的哈希结构

常见的哈希结构

  • 数组
  • set 集合
  • map 映射

set

集合 底层实现 是否有序? 数值可重复? 更改数值? 查询效率 增删效率
std::set 红黑树 有序 O(log n) O(log n)
std::multiset 红黑树 有序 O(logn) O(logn)
std::unordered_set 哈希表 无序 O(1) O(1)

map

集合 底层实现 是否有序? 数值可重复? 更改数值? 查询效率 增删效率
std::map 红黑树 key有序 key不可重复 key不可修改 O(logn) O(logn)
std::multimap 红黑树 key有序 key可重复 key不可修改 O(log n) O(log n)
std::unordered_map 哈希表 key无序 key不可重复 key不可修改 O(1) O(1)



本站采用 Volantis 主题设计