常用哈希表

 什么时候使用哈希法?

当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。

 

哈希表大概可分为三大类:数组,set,map

1.set

如果哈希值比较少、特别分散、跨度非常大,使用数组就造成空间的极大浪费。

此时就要使用另一种结构体了,set ,关于set,C++ 给提供了如下三种可用的数据结构:

  • std::set
  • std::multiset
  • std::unordered_set

std::set和std::multiset底层实现都是红黑树,std::unordered_set的底层实现是哈希表, 使用unordered_set 读写效率是最高的,并不需要对数据进行排序,而且还不要让数据重复,所以选择unordered_set。

 

头文件#include<unordered_set>

unordered_set不能用于存放键值对,功能类似数组,判断某元素是否存在,且可返回其出现的频次。

赋值查找方法同map

2.map

map 是一个key value 的数据结构,map中,对key是有限制,对value没有限制的,因为key的存储方式使用红黑树实现的

头文件#include<unordered_map>

unordered_map用于存放键值对,其中元素以pair形式存放。

unordered_map<int ,int> m ; //第一个参数是key_type ,此处的key键值是指 “元素” ;第二个参数是value_type,此处的value是值“下标”

 

 

 

 

 

 clear():清空哈希表

erase(key):删除某元素

 

posted @ 2023-03-11 09:20  编程小白bai  阅读(76)  评论(0)    收藏  举报