GESP7级C++考试语法知识(四、哈希表(6、快速判断是否存在)
第六课《失踪宝石调查队——快速判断是否存在》一、国王的宝石失踪了1、一天早晨。程序王国的国王刚刚起床。忽然发现 王者宝石不见了2、国王大喊“不好啦”“我的宝石丢了”3、整个王国立刻行动起来。成立了一支特别小队️ 失踪宝石调查队4、队长小智接到任务“请立刻调查”“看看宝石是否还在仓库里”二、最笨的调查方法1、仓库里有很多箱子红宝石 蓝宝石 绿宝石 黄金 钻石 银币2、现在要找钻石3、最笨的方法看第1个箱子 ↓ 不是 ↓ 看第2个箱子 ↓ 不是 ↓ 看第3个箱子 ↓ 不是一直找到最后。4、如果有100万件宝物怎么办三、智慧大臣的新武器1、智慧大臣说“别傻找了”“我们有哈希表呀”2、于是他拿出unordered_mapstring,int mp;3、记录红宝石 → 1 蓝宝石 → 1 绿宝石 → 1 黄金 → 1 钻石 → 14、这里Key表示宝物名字5、而Value其实不重要。6、重要的是这个宝物在不在四、调查队的问题1、调查队经常问钻石存在吗 黄金存在吗 珍珠存在吗2、这种问题其实都是是否存在3、而不是出现多少次4、所以今天我们要学习快速判断是否存在五、第一个神器count()1、假设仓库unordered_mapstring,int mp; mp[红宝石] 1; mp[蓝宝石] 1; mp[钻石] 1;2、现在调查钻石在吗3、代码cout mp.count(钻石);输出1表示存在六、如果不存在呢1、调查珍珠在吗2、代码cout mp.count(珍珠);输出0表示不存在是不是特别方便七、count() 的含义1、记住mp.count(x)意思x在不在哈希表里2、返回值只有两种1 → 存在 0 → 不存在3、因为unordered_map里面一个 Key 只能有一个。所以不会出现2次 3次 5次八、最经典写法1、调查钻石if(mp.count(钻石)) { cout 找到了; } else { cout 没找到; }2、如果存在找到了否则没找到九、宝石调查系统完整程序#include iostream #include unordered_map using namespace std; int main() { unordered_mapstring,int mp; mp[红宝石] 1; mp[蓝宝石] 1; mp[钻石] 1; string x; cin x; if(mp.count(x)) cout 存在; else cout 不存在; return 0; }输入钻石输出存在输入珍珠输出不存在十、第二个神器find()1、调查队里还有另一位高手。他喜欢使用find()2、例如mp.find(钻石)意思去仓库找钻石十一、find() 返回什么1、如果找到mp.find(钻石)返回宝石位置2、如果找不到返回mp.end()3、所以经典写法if(mp.find(钻石) ! mp.end()) { cout 找到; } else { cout 没找到; }十二、count() 与 find() 对比方法1mp.count(x)适合只关心存在不存在例如宝石在吗方法2mp.find(x)适合还想拿到数据位置例如找到这个人 然后查看信息十三、查重问题来了1、调查队又接到新任务。输入5 2 7 1 3突然又来了一个72、调查队问7是不是已经出现过十四、哈希表秒杀查重建立仓库unordered_mapint,int mp;读到5存进去mp[5] 1;读到2存进去mp[2] 1;读到7存进去mp[7] 1;后来又来了7判断if(mp.count(7))发现存在说明7重复出现了十五、经典题判断是否有重复数字1、输入1 5 2 7 3 5看到1不存在。记录。看到5不存在。记录。看到2不存在。记录。看到7不存在。记录。看到3不存在。记录。2、看到5发现mp.count(5)结果1说明5重复了十六、完整代码#include iostream #include unordered_map using namespace std; int main() { int n; cin n; unordered_mapint,int mp; for(int i0;in;i) { int x; cin x; if(mp.count(x)) { cout 发现重复数字 x endl; } mp[x] 1; } return 0; }十七、时间复杂度为什么快1、假设100万个数字2、普通方法每来一个数字。都去前面找。复杂度O(n²)3、哈希表mp.count(x)平均O(1)总复杂度O(n)快得多十八、比赛中的高频应用1、以后看到下面这些词是否出现过 是否存在 查重 重复数字 重复单词 黑名单 白名单 访问记录2、第一反应unordered_map或者unordered_setunordered_set是unordered_map的阉割版——去掉了 value只留 key专用于去重和存在性判断。十九、小试牛刀1、仓库苹果 香蕉 橘子2、问题1苹果存在吗答案存在3、问题2西瓜存在吗答案不存在4、问题3判断代码if(mp.count(苹果))条件成立吗答案✅ 成立本课总结1、今天我们学会了哈希表第二大应用快速判断是否存在2、核心函数mp.count(x)含义x存在吗返回1 → 存在 0 → 不存在3、另一种写法mp.find(x)4、经典应用✅ 查重✅ 判断存在✅ 黑名单✅ 白名单✅ 访问记录5、经典模板判断是否存在if(mp.count(x)) { cout 存在; } else { cout 不存在; }查重if(mp.count(x)) { cout 重复; } mp[x] 1;6、魔法口诀哈希仓库真奇妙 找东西根本不用找。 count一下马上知 存在不存在全知道。 查重复查名单 哈希表最擅长。 统计次数用 判断存在用count下一课我们将认识哈希表的亲兄弟《魔法通讯录——认识 unordered_set》你会发现有时候我们根本不关心 Value只关心这个东西在不在这时unordered_set就要闪亮登场了

相关新闻

GESP7级C++考试语法知识(四、哈希表(5、统计出现次数)

GESP7级C++考试语法知识(四、哈希表(5、统计出现次数)

第五课:《人数统计中心——统计出现次数》一、统计中心来了一个大任务1、在程序王国里,有一座神秘建筑:🏢 人数统计中心这里每天都在统计各种数据。2、有一天,国王拿来一张名单:小狗 小猫 小狗 小兔 小狗 小…

2026/6/21 15:07:36阅读更多 →
【小白也能轻松用】OpenClaw v2.7.9 部署报错解决方案,小白一次安装成功(含最新安装包)

【小白也能轻松用】OpenClaw v2.7.9 部署报错解决方案,小白一次安装成功(含最新安装包)

OpenClaw(小龙虾)Windows 一键部署实操手册|十分钟搭建专属本地数字员工 适配平台:Windows 10/11(64 位)|零基础友好|全可视化界面|无编程门槛 当下热度较高的开源 AI 智…

2026/6/21 15:07:36阅读更多 →
MPC5607B与MPC5604B迁移实战:ADC、eMIOS与引脚配置差异详解

MPC5607B与MPC5604B迁移实战:ADC、eMIOS与引脚配置差异详解

1. 项目概述与核心价值在汽车电子和工业控制领域,基于Power Architecture的MPC560xB/C/D系列微控制器因其高可靠性、丰富的外设和强大的实时处理能力而被广泛应用。当项目面临成本优化、功能增减或供应链调整时,工程师常常需要在同一家族的不同型号间进行…

2026/6/21 15:07:36阅读更多 →
3分钟学会使用PKHeX自动合法性插件:宝可梦数据合规终极指南

3分钟学会使用PKHeX自动合法性插件:宝可梦数据合规终极指南

3分钟学会使用PKHeX自动合法性插件:宝可梦数据合规终极指南 【免费下载链接】PKHeX-Plugins Plugins for PKHeX 项目地址: https://gitcode.com/gh_mirrors/pk/PKHeX-Plugins 你是否曾因宝可梦数据不合规而被禁止参加线上对战?是否花费数小时手动…

2026/6/21 16:22:44阅读更多 →
Linux环境变量与Shell变量本质区别及实战配置指南

Linux环境变量与Shell变量本质区别及实战配置指南

1. 项目概述:为什么Linux环境下变量管理是每个用户绕不开的基本功在Linux系统里,環境変数和シェル変数不是教科书里的抽象概念,而是你每天敲下的每一条命令能否正常执行的底层支撑。比如你输入python3 --version能立刻返回结果,靠…

2026/6/21 16:22:44阅读更多 →
本地跑Claude风格工作流:Qwen3.5-9B蒸馏版+LM-Studio+Claude C实战指南

本地跑Claude风格工作流:Qwen3.5-9B蒸馏版+LM-Studio+Claude C实战指南

1. 项目概述:一场轻量级模型能力边界的实测突围最近在本地大模型圈子里,一个说法传得挺勤:“Qwen3.5-9B蒸馏版,能打Claude-Opus-4.6?”这话听着像玄学,但背后是实实在在的工程取舍——不是比谁参数多、显存…

2026/6/21 16:22:44阅读更多 →
Ultimate ASI Loader:游戏MOD加载神器的完整使用指南

Ultimate ASI Loader:游戏MOD加载神器的完整使用指南

Ultimate ASI Loader:游戏MOD加载神器的完整使用指南 【免费下载链接】Ultimate-ASI-Loader The Ultimate ASI Loader is a proxy DLL that loads custom .asi libraries into any game process. 项目地址: https://gitcode.com/gh_mirrors/ul/Ultimate-ASI-Loade…

2026/6/21 16:22:44阅读更多 →
MAC7100 EIM异步SRAM扩展实战:从原理到调试的完整指南

MAC7100 EIM异步SRAM扩展实战:从原理到调试的完整指南

1. 项目概述与核心价值在嵌入式系统开发中,微控制器(MCU)的内置存储资源常常捉襟见肘。无论是存放复杂的应用程序代码,还是处理海量的实时数据,我们都需要将目光投向外部。这时,外部接口模块(Ex…

2026/6/21 16:22:44阅读更多 →
MindDR:基于多智能体协作的深度研究框架设计与实践

MindDR:基于多智能体协作的深度研究框架设计与实践

1. 项目概述:当“深度研究”遇上“多智能体”最近在AI圈子里,一个词的热度居高不下:“多智能体”。从OpenAI的“模拟小镇”到斯坦福的“西部世界”,再到国内各大厂的开源框架,仿佛一夜之间,让多个AI智能体协…

2026/6/21 16:17:43阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/21 0:00:40阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/21 0:00:40阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/21 0:00:40阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/21 0:00:40阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/21 0:00:40阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/21 0:00:40阅读更多 →