从零开始的C++(二十)

哈希:

用于unorder_map和unorder_set,其本身是一种思想,即通过一个值利用某种算法去映射到另一个值上。利用哈希思想具体实现的是哈希表。

哈希通常函数:插入和查找

1.插入:用某种算法算出插入值对应的插入下标。

2.查找:利用插入的算法找出待查找的值可能出现的下标。

哈希冲突:

概念:不同的数通过算法计算出的插入下标相同,此时发生哈希冲突。

一般来说数的个数越多越容易发生冲突,有点类似雀巢原理?

解决哈希冲突:

法一:开散列

相同下标的元素放在同一个链表中,此时该链表中所有元素共同为一个桶,每个桶中所有元素彼此哈希冲突。

法二:闭散列

发生哈希冲突时,后插入的元素依次往下标+1、+2...的空闲位置放(线性探测),也也可以往下标+1、下标+4、下标+9...的空闲位置差(二次探测)

哈希扩容:

当插入元素很多时,哈希冲突的概率会越来愈大,为了减少哈希冲突概率,需要扩容。对于开散列,一般在原本链表数组基础上扩容,然后直接将链表上所有元素重新插入。对于闭散列,一般开一份新空间,其长度是原本数组二倍,然后复用插入函数将原数组上的元素拷贝一份放到新空间,后释放原数组,指向新数组。

位图:

一种基于哈希思想的应用,用于海量整形数据的查找、判断是否存在。

原理:每一个数用一个比特位表示是否存在,极大程度减少所占空间。插入时通过一个函数。将整形数据映射到对应比特位上。查找时只需根据函数判断对应比特位是否为1即可。

缺陷:位图只能用于全是整形数据,例如字符串之类的不能使用。

针对位图的缺陷,有了布隆过滤器。

布隆过滤器:

对于字符串,会先通过一个算法转换成对应的一个整形数据,在通过哈希函数找出对应下标(比特位)。

缺陷:虽然可以适用于字符串等非整形类型,但是仍然会有哈希冲突的存在,如不同字符串对应的下标相同。因此只能正确判断字符串不在,无法百分百判断字符串是不是在。(存在误判),因此在查找一个字符串时可以过滤掉不在的数,不能过滤掉可能在的数,因此是过滤器。

布隆过滤器一般无法进行删除,因为不同字符串可能对应同一个下标,若删除可能导致错误。若想要实现删除,需要额外增加一个计数位置,记录当前有几个字符串在此下标,但这样又会额外开辟大量空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/201868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

比较器 xilinx 拆成3bit 比较

lut6 A B 每个3bit, 使用一个lut https://github.com/Xilinx/Vitis-Tutorials/blob/2023.2/AI_Engine_Development/AIE/Design_Tutorials/03-beamforming/Module_03_PL_Design/dlbf_data/hdl/dlbf_data_ram2axis_64b.v reg [15:0] addrb16d0;(* KEEP "TRUE&q…

面试问题--计算机网络:二层转发、三层转发与osi模型

计算机网络:二层转发、三层转发与OSI模型 1. 二层转发和三层转发 1.1 二层转发(Data Link Layer) 在计算机网络中,二层转发是通过数据链路层(Data Link Layer)实现的。以下是关于二层转发的一些关键信息…

浏览器开发者工具使用(F12)

F12 第一个按钮:停止和开启按钮,默认是开启抓包 第二个按钮:清空抓包记录 第三个按钮:过滤器,可以通过搜索想要的关键字 第四个按钮:保留日志(建议必须勾上,不然有些跳转页面无法…

数字工厂时代,如何实现3D数据访问与发布、WEB大模型可视化?

Tech Soft 3D的HOOPS 3D CAD SDK为现代工厂工作流程奠定了基础,通过最快、最准确的CAD数据访问和动态3D可视化支持数字孪生、机器人仿真、设计、流程和规划、IIoT和操作辅助应用程序。 本文将和您详细探讨。如何利用HOOPS技术来增强您的应用程序。 HOOPS_HOOPS试…

设计一个在裸机下使用的简单软件定时器(1):框架+数据结构分析

0 前言 在RTOS中,我们经常用到软件定时器来为我们处理一些对于实时性要求不高的定时任务。在裸机开发中,我们可能也有很多需要定时执行的任务,为了优雅地执行这些定时任务,本文设计一个在裸机下使用的简单软件定时器,…

OpenAI 在中国申请 GPT-6、GPT-7 商标;Google 推迟发布 OpenAI 竞品 Gemini 至明年 1 月【无际Ai资讯】

天眼查 app 显示,近日,欧爱运营有限责任公司(OPENAI OPCO,LLC)申请多枚「GPT-6」「GPT-7」商标,国际分类为科学仪器、网站服务,当前商标状态均为等待实质审查。 此前 OpenAI CEO Sam Altman 在接…

【laBVIEW学习】4.声音播放,自定义图标,滚动条设置,保存参数以及恢复参数

一。声音播放(报错,未实现) 1.报错4810 2.解决方法: 暂时未解决。 二。图片修改 1.目标:灯泡---》自定义灯泡 2.步骤: 1.右键点击--》自定义运行 表示可以制作自定义类型 2.右键--》打开自定义类型 这样就…

阿里云OSS接入

1 依赖包,对应版本号 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version></dependency> 2 配置文件 package com.jcl.magic.common.config;import com.aliyu…

UVM验证平台中加入sequencer

sequence机制用于产生激励&#xff0c;它是UVM中最重要的机制之一。在 一个规范化的UVM验证平台中&#xff0c;driver只负责驱动transaction&#xff0c;而不负责产生transaction。sequence机制有两大组成部分&#xff0c;一是 sequence&#xff0c;二是sequencer。如何在验证平…

常用功能测试的检查点与用例设计思路

1 功能测试 1.1 用户登录 1.1.1 数据输入 1. 帐号或密码为空。 2. 帐号或密码长度超长。 3. 帐号或密码不符合格式要求。 4. 帐号在数据库中不存在。 5. 密码在数据库中不存在。 6. 密码在数据库中存在&#xff0c;但与帐号不匹配。 7. 正确的帐号和正确的密码。 8. …

揭秘:软件测试中Web请求的完整流程!

在软件开发的过程中&#xff0c;测试是一个至关重要的环节。而在现代互联网应用中&#xff0c;Web请求是很常见的一个测试需求。本文将介绍Web请求的完整测试流程&#xff0c;帮助读者更好地理解软件测试的关键步骤。 一、测试准备阶段 在进行Web请求测试之前&#xff0c;测试团…

创意云×四川永辉直播首秀顺利开播,vLive助力本地生活直播玩转“双12”

12月5日&#xff0c;“四川永辉超市双12特惠”直播首秀顺利开播&#xff0c;蓝海创意云为此次直播提供了虚拟场景制作和全程的技术支持。蓝海创意云使用自主研发的vLive虚拟直播系统&#xff0c;将其应用到整个直播过程中。这种独特的视觉新体验成功吸引了众多观众的关注和参与…

Java jdk和jre的区别

jdk和jre的区别为&#xff1a;JRE是java运行时环境而JDK是java开发工具包&#xff0c;JDK包含JRE&#xff0c;但是JRE可以独立安装。 JDK&#xff1a; java development kit (java开发工具)&#xff0c;JDK 是用于开发 Java 程序的最小环境。 JRE&#xff1a; java runtime e…

【动态规划】LeetCode-64.最小路径和

&#x1f388;算法那些事专栏说明&#xff1a;这是一个记录刷题日常的专栏&#xff0c;每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目&#xff0c;在这立下Flag&#x1f6a9; &#x1f3e0;个人主页&#xff1a;Jammingpro &#x1f4d5;专栏链接&…

前端知识笔记(十二)———前端面试容易问到的问题总结

1.$(document).ready()方法和window.onload有什么区别&#xff1f; 执行时间不同&#xff1a;window.onload必须等到页面内的所有元素&#xff08;&#xff09;加载完毕后才能执行。 $(document).ready()是页面DOM结构绘制完毕后就执行&#xff0c;不必等到加载完毕 执行次数…

一线大厂Redis高并发缓存架构

场景1&#xff1a;秒杀库存场景&#xff0c; 10000人抢100个商品 如果用普通的分布式锁实现&#xff0c; 最后抢到的人&#xff0c;要等前面99个人抢完 优化方案&#xff1a;可用分段锁&#xff0c; 降低锁的粒度&#xff0c; 比如1-10库存用锁product:101_1,11-20库存用锁pr…

dva的学习总结

公司的项目源码用的是react和dva&#xff0c;所以我必须抓紧时间学习一下dva了&#xff0c;一天时间&#xff0c;看看我学到了什么&#xff08;dva官网DvaJS&#xff09;[这是很久之前就打算写的了&#xff0c;一直没时间&#xff0c;一直存着草稿&#xff0c;今天发出来吧] 1…

大数据量快速数据库还原程序

最近在搞数据库备份&#xff0c;备份出来的sql都十几G&#xff0c;还原的贼慢还容易报错&#xff0c;就写了个Java程序来定时还原数据库&#xff0c;我加快还原的方法是修改数据库配置&#xff0c;因此程序需要重启数据库&#xff0c;线上项目数据库不能重启的就别用了。&#…

dp-基础版动态规划(动态规划每日一题计划)10/50

最小路径和 class Solution {public static int minPathSum(int[][] grid) {int dp[][]new int[grid.length][grid[0].length];dp[0][0]grid[0][0];for(int i1;i<grid[0].length;i){dp[0][i]grid[0][i]dp[0][i-1];}for(int i1;i<grid.length;i){dp[i][0]grid[i][0]dp[i-…

江苏开放大学形成性考核 平时作业参考试题

试卷代号&#xff1a;1317 社会工作行政&#xff08;本&#xff09; 参考试题 一、单项选择题&#xff08;每题只有一个正确答案&#xff0c;请将正确答案的字母填写在括号内。每题1分&#xff0c;共8分&#xff09; 1.面对新冠肺炎疫情带来的不确定性和挑战&#xff0c;某社…