什么时候使用哈希法?
当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。
哈希表大概可分为三大类:数组,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形式存放。
clear():清空哈希表
erase(key):删除某元素
标签:std,map,常用,set,key,哈希,unordered From: https://www.cnblogs.com/ysl99999/p/17205277.html