赞
踩
散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)
查找时,根据这个确定的对应关系找到给定值key的映射f(key),若查找集合中存在这个记录,则必定在f(key)的位置上
unordered_map
//存在于下面的头文件中,在定义的时候要引用该头文件
#include <unordered_map>
//获取大小
cout<<mp.size();
//删除其键值
mp.erase(3);
//逆置散列表
mp.reserve(n);
//在容器中查找以key键的键值对的个数
mp.count(3);
//第一个值为键值--第2个保存的为其对应的值--插入的时候不能够出现键值相同,如果键值相同则无法插入
mp.insert({20,30});
//插入一组键值比insert效率高
mp.emplace(15,10);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6WkLfHMA-1651850024140)(C:/Users/kexib/AppData/Roaming/Typora/typora-user-images/image-20220506223102162.png)]
为了解决这种服务器出现问题,数据大量移动的这种问题,提出了一致性哈希
图中是在服务器部署均衡的情况下,当服务器部署不均衡的时候,大量的数据集中到一个服务器上的时候,我们称其为哈希偏斜
海量的数据去重
一组非常长的二进制矢量+一组哈希函数
在初始状态时,对于长度为 m 的位数组,它的所有位都被置为0,如下图所示:
当有变量被加入集合时,通过 K 个映射函数将这个变量映射成位图中的 K 个点,把它们置为 1(假定有两个变量都通过 3 个映射函数)
查询某个变量的时候我们只要看看这些点是不是都是 1 就可以大概率知道集合中有没有它了
为什么说是可能存在,而不是一定存在呢?那是因为映射函数本身就是散列函数,散列函数是会有碰撞的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。