unordered_map在C++中的用法+实例

C++标准库<unordered_map>使用方法最全总结及在机器人SLAM中的应用 容器及其相关函数在机器人 SLAM 开发中非常有用,它提供了一种高效的存储和管理键值对的方式,适用于存储各种需要快速查找、插入和删除操作的数据,为开发人员提供了便利,提高了开发效率和程序性能。- 使用场景:当需要存储键值对,并要求快速的查找、插入和删除操作,且元素的顺序不重要时使用。- 使用场景:读取或修改元素的值,若元素不存在会插入一个默认值,需注意潜在的性能开销。中的元素是无序的,因为它们存储在基于哈希值的桶中,而不是按照键的顺序存储。- 使用场景:当已经有元素的迭代器时,使用该函数删除元素。 阅读详情

知识索引

无序容器,内部是由哈希表实现的
头文件:

#include<unordered_map>

定义

unordered_map<a ,b> dic;
//a,b为类型,可填int/char/string/long long等。
//dic为unordered_map的名称

基本操作

//得到元素数量
dic.size()
//插入
dic.insert()
//查找
dic.find(key)或dic.count(key)
//删除
dic.erase(key)
//修改
m[key]=value

代码

#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
	unordered_map<char, int>m;
	m['a'] = 9;
	m['?'] = 5;
	m['z'] = 99;
	m['A'] = 50;
	m['Z'] = -2;
	m[' '] = 0;
	cout << m.size() << endl;
	if (m.count(' ') == 1) {
		cout << m[' ']<<endl;
	}
	for (auto it=m.begin(); it!=m.end(); it++) {
		cout << it->first << " " << it->second << endl;
	}

	return 0;
}

实例运用

8.1 QQ帐户的申请与登陆
分数 15
作者 DS课程组
单位 浙江大学
实现QQ新帐户申请和老帐户登陆的简化版功能。最大挑战是:据说现在的QQ号码已经有10位数了。

输入格式:
输入首先给出一个正整数N(≤10510^5105),随后给出N行指令。每行指令的格式为:“命令符(空格)QQ号码(空格)密码”。其中命令符为“N”(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码;命令符为“L”(代表Login)时表示是老帐户登陆,后面是登陆信息。QQ号码为一个不超过10位、但大于1000(据说QQ老总的号码是1001)的整数。密码为不小于6位、不超过16位、且不包含空格的字符串。

输出格式:
针对每条指令,给出相应的信息:

1)若新申请帐户成功,则输出“New: OK”;

2)若新申请的号码已经存在,则输出“ERROR: Exist”;

3)若老帐户登陆成功,则输出“Login: OK”;

4)若老帐户QQ号码不存在,则输出“ERROR: Not Exist”;

5)若老帐户密码错误,则输出“ERROR: Wrong PW”。

输入样例:

5
L 1234567890 myQQ@qq.com
N 1234567890 myQQ@qq.com
N 1234567890 myQQ@qq.com
L 1234567890 myQQ@qq
L 1234567890 myQQ@qq.com

输出样例:

ERROR: Not Exist
New: OK
ERROR: Exist
ERROR: Wrong PW
Login: OK

代码实现

#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
	int n;
	char ch;
	long long num;
	string str;
	unordered_map<long long, string>dic;
	cin >> n;
	getchar();//这里注意写,我就是一开始这里忘写了导致第一个数据输入没结果
	while (n--) {
		scanf("%c %lld",&ch,&num);
		getline(cin,str);
		int t=dic.count(num);
		if(ch=='N'){
			if(t==1){
				cout<<"ERROR: Exist"<<endl;
				continue;
			}
			dic[num]=str;
			cout<<"New: OK"<<endl;
		}
		if(ch=='L'){
			if(t==0){
				cout<<"ERROR: Not Exist"<<endl;
				continue;
			}
			if(str==dic[num]){
				cout<<"Login: OK"<<endl;
			}
			else{
				cout<<"ERROR: Wrong PW"<<endl;
			}
		}
	}

	return 0;
}
C++ unordered_map 使用详解(含C++20新特性) 目录 查找元素 迭代器 容量 修改操作 通接口 哈希策略 观察器 std::swap(std::unordered_map) std::erase_if(std::unordered_map) 简介 本篇博客介绍C++常用的无序关联容器unordered_map。unordered_map是C++11正式加入的对hashmap的官方实现(之前标准C++没有hashmap的官... 阅读详情

相关推荐

【C++实战篇】C++中使用哈希表(unordered_map)的一些常用操作方法(哈希表的建立、添加元素、成员函数、遍历、实际应用)

这篇文章介绍了C++中unordered_map哈希表的常用操作方法及其实际应用。主要内容包括:1) 基本哈希表的创建和元素添加方法;2) 常用成员函数如find、count、size等;3) 两种遍历哈希表的方式;4) 三个典型应用案例:字母异位词判断、两数之和问题、数组中出现次数超过一半的数字查找。文章通过代码示例详细说明了每种操作的使用方法,并提供了LeetCode相关题目的参考解法,对理解和使用unordered_map有很好的参考价值。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1万+

C++中的unordered_map

因此,可以通过判断 find 方法的返回值是否等于 map.end() 来判断是否存在键为 temp 的元素,从而决定是否需要将当前元素的值和下标保存到哈希表中。因此,可以通过判断 find 方法的返回值是否等于 map.end() 来判断是否存在键为 temp 的元素,从而决定是否需要将当前元素的值和下标保存到哈希表中。如果 find 方法返回的迭代器指向哈希表的尾部,则说明哈希表中不存在键为 temp 的元素,需要将当前元素的值和下标保存到哈希表中。3、在哈希表中查找是否存在键为 temp 的元素。

qq_19432525的博客 3794

为什么AI时代的优秀组织,都在学习Meta的Pod结构?看完秒懂

当AI技术重塑产业格局,企业协作正面临前所未有的挑战——层级繁琐、跨部门内耗、迭代滞后,传统组织模式早已难以跟上技术革新的步伐。作为全球AI原生企业的标杆,Meta独创的Pod组织模式,用“小而美”的自治单元打破困局,成为AI时代高效协作的典范。本文将从定义、运作、价值到未来演进,全面拆解Pod模式,为企业组织变革提供可参考的思路与路径。德鲁克曾说:“组织的功能就是让平凡的人做平凡的事。”而Meta Pod打破这一局限,通过去中心化、指标导向、跨界融合,让优秀人才产生“化学反应”。

Kiss_AIHR的博客 1166

C++ STL unordered_map

个人学习记录

yearning_mjw的博客 814

reCAPTCHA v3隐形验证码实战:5分钟教你用Capsolver获取0.9高分令牌

本文提供了一份reCAPTCHA v3隐形验证码的实战指南,详细解析其浏览器评分机制,并手把手教你使用Capsolver自动化获取0.9高分令牌。内容涵盖从环境侦察、关键参数(sitekey与pageAction)提取,到API调用、结果轮询及令牌使用的完整流程,旨在帮助开发者高效绕过自动化交互障碍。

weixin_29314405的博客 347

Android 导出aar 用于Unity 百度语音唤醒

AndroidStudio版本下载地址Android Studio Arctic Fox Unity版本2021.3.26f1c1 新建AndroidStudio工程 新建module 这里注意一下,网上很多教程说要注意包名要和unity一样,但是测试下来,不一样也可以的 在新建的module里添加这两个jar包,并点击右键add as library 导入jniLibs 右键创建这几个package 代码就安装这个大佬的写参考代码 需要注意的的是在WakeupListener脚本里U

weixin_38777563的博客 633

C++进阶之std::unordered_map:用法实例(三百七十六)

本篇目的:C++进阶之std::unordered_map:用法实例基本概念是 C++ 标准库中的一个关联容器,类似于std::map,但使用哈希表作为底层数据结构,因此它不保证元素的顺序。它存储键值对,每个键都必须是唯一的,并且根据键的哈希值进行快速查找、插入和删除。无序性与std::map不同,内部的元素是无序的。由于哈希表的设计,元素是通过哈希函数来映射并存储的,因此在遍历时,元素的顺序是不可预测的。这使得它的插入和查找操作更加高效,而不关注顺序。键唯一性保证每个键在容器中唯一。

Android系统攻城狮 1321

HIDL概述

HIDL背景 Treble 是 Google Android 团队的一项重大项目,意在 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Android 7.x 及更早版本中没有正式的供应商接口,因此设备制造商必须更新大量 Android 代码才能将设备更新到新版 Android 系统: 图1 Treble ...

u013357557的专栏 2万+

C++STL之unordered_map的简单使用

unordered_map 容器和 map 容器仅有一点不同,即 map 容器中存储的数据是有序的,而 unordered_map 容器中是无序的。以键值对(pair类型)的形式存储数据,存储的各个键值对的键互不相同且不允许被修改。unordered_map 容器底层采用的是哈希表存储结构,该结构本身不具有对数据的排序功能,所以此容器内部不会自行对存储的键值对进行排序。unordered_map容器通过其键值访问单个元素的速度要比map容器快。做图的题的时候可以用这个来保存邻接表。

关注网络安全、云原生安全 1680

基于A*算法的二维栅格地图路径规划与避障MATLAB仿真

本文将介绍如何使用MATLAB编写基于A*算法的二维栅格地图路径规划与避障的仿真程序。我们可以使用二维数组表示地图,其中每个元素表示一个栅格的状态,例如1表示障碍物,0表示可行走区域。接下来,我们需要定义A*算法的节点类。G值表示从起始节点到当前节点的代价,H值是启发式函数估计的从当前节点到目标节点的代价。算法,我们可以有效地找到起始点到目标点的最短路径,并在仿真中进行可视化展示。算法的基本思路是从起始节点开始,按照一定的启发式函数选择下一个节点,直到找到目标节点或者遍历完所有可行走区域。

ByteWhizX的博客 1273

路径规划 | 图解A*、Dijkstra、GBFS算法的异同(附C++/Python/Matlab仿真)

图解A*、Dijkstra、GBFS算法原理,分析三种算法异同,提供C++/Python/Matlab仿真实现

FRIGIDWINTER的博客 2万+

C++STL:unordered_map

不得不提一下,hash_map未加入在C++11标准中。 在VC中编译 1 #include <hash_map> 2 using namespace stdext; 3 hash_map<int ,int> myhash; 在GCC中编译: #include <ext/hash_map> 2 using namespace __gnu_cxx; 3 hash_map<int ,int> myhash; 既如此,还是用unordered_map.

OneBaBa的专栏 284

【OpenClaw从入门到精通】第17篇:OpenClaw巨头布局实战:阿里CoPaw/腾讯云/百度/火山引擎深度拆解(2026实操版)

2026年OpenClaw以22.8万星标登顶GitHub,引发阿里、腾讯、百度、字节等互联网巨头入局角逐。本文基于公开技术文档与实测经验,深度解析四大巨头的OpenClaw布局战略:阿里云CoPaw的全栈托管、腾讯云的流量入口绑定、百度智能云的搜索生态内嵌、火山引擎的极致智力供给。从核心原理、算法构建、实操流程三个维度,提供可直接落地的接入方案,包含完整代码示例与执行结果验证。通过流程图可视化核心架构,搭配避坑指南与选型矩阵,帮助新手快速上手、进阶读者实现多厂商协同部署。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1680

C++的 unordered_map,unordered_set

一、介绍 从C++11开始,哈希表实现已添加到C++标准库标准。set对应unordered_set,map对应unordered_map。 set与unordered_set区别和map与unordered_map区别类似: set实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,因此map内部所有的数据,在任何时候,都是有序的。 unordered_set基于哈希表,数据插入和查找的时间复杂度很低,几乎是常数时间,而代价是消耗比较多的内存,无自动排序功能。底层实现上.

sinat_31608641的博客 1170

从0到1打造一台机器人走起来

1)本体机械结构设计,依据人体生物学和生物力学知识,结合机器人运动时各关节扭矩需求,进行合理选用电机,比如胯部需要大扭矩,腿部惯量小等2)硬件拓扑上,分层架构的信号层和功率协同工作,高带宽,低延时,硬实时3)步态规划设计与验证环节实机回溯和部署过程:Real2Sim,Sim2Sim,Sim2Real。

weixin_43163941的博客 243

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

unordered_map和map学习使用笔记

unordered_map:关联容器,内部采用hash表结构,具有快速检索的功能 特性: 1:可以通过key来快速检索value,主要可以用于处理上位机字符串指令(先分割字符串,然后按照(key,value)存储; 2:无序性,key值排序就是直接按照插入的顺序进行排序; 3:键值唯一; 使用: 1:迭代器的使用(遍历元素) unordered_,map<char, int > Map; 迭代器:unordered_,map&lt...

Marbles76的博客 983

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

STL系列:map和unordered_map

map和unordered_map的使用 unordered_map的用法和map是一样的,提供了insert,size,count,find等操作,并且里面的元素也是以pair类型来存贮的。 其底层实现是完全不同的,上方已经解释了,但是就外部使用来说却是一致的。 C++ Map常见用法说明 map 包含在头文件#include &lt; map &gt;中。 map是STL的一个...

五山口老法师 707

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

哈希map和红黑树map比较

在数据量为几百项时,红黑树map的优势较大,但数据量偏大时,哈希map检索速度较快 红黑树map基于红黑树实现,每次检索从头开始检索 哈希map基于哈希散列,大量数据检索优势大 C++11新特性:unordered_map和map的区别: unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value。不同的是unordered_map不会根据...

weixin_42067873的博客 1815

unordered_map

.

Vvlowkey的专栏 424

C++ ——一文读懂:unorder_map

map: 优点: 有序性,这是map结构最大的优点,其元素的有序性在很多应用中都会简化很多的操作。 红黑树,内部实现一个红黑书使得map的很多操作在lgn的时间复杂度下就可以实现,因此效率非常的高。 缺点:空间占用率高,因为map内部实现了红黑树,虽然提高了运行效率,但是因为每一个节点都需要额外保存父节点、孩子节点和红/黑性质,使得每一个节点都占用大量的空间。 适用处:对于那些有顺...

xiaohu的博客 2020

STL-undered_map用法(C++)

1.介绍:     unordered_map是一个关联容器,内部采用的是哈希链表的结构,拥有快速检索的功能。     1、关联性:通过key的值去检索value,二不是通过绝对地址;     2、无序性:使用hash表储蓄,内部无序;     3、map:每个值对应一个键值;     4、键唯一性:不存在两个

two_apples的博客 3238

数据结构:C++ STL 哈希表(unordered_map)

数据结构:C++ STL 哈希表(unordered_map) unordered_map 容器,直译过来就是"无序 map 容器"的意思。所谓“无序”,指的是 unordered_map 容器不会像 map 容器那样对存储的数据进行排序。换句话说,unordered_map 容器和 map 容器仅有一点不同,即 map 容器中存储的数据是有序的,而 unordered_map 容器中是无序的。 1.哈希表创建 unordered_map头文件; unordered_map<T,T> m

meraki的博客 8223

unordered_map用法

emplace函数-----原位构造元素 unordered_map<key,value>map; map.emplace(key, element) 下面为例子: (包含一个知识点first和second的用法) 2、查找 map.find(key) != map.end() 存在key map.count(key) !=0 存在key map[key] = value 存在 map[key] =0 (value为int时,不存在key输出为0)...

无问西东的博客 1090

STL之unordered_map与unordered_set的简单用法

STL之unordered_map与unordered_set的简单用法 快速入门 #include<iostream> #include<unordered_map> #include<unordered_set> using namespace std; int main(void) { unordered_map<string, int>m;//哈希表,键值对 //用法:insert/find/erase unordered_s

敖丙007的博客 275

C++语法之STL映射类

键值对容器,在需要频繁快速查找时使用 map和multimap类 头文件:< map> 内部结构类似二叉树实现,在插入元素的时进行排序,所以不能替换特定位置的元素 map和multimap的差别在于能不能储存唯一的键 实例化: std::map<keyType,valueType,Predicate=std::less<keyType>> Name; std...

Mrs_Two的博客 385

C++ STL :unordered_map & unordered_set

unordered_map unordered_set

good_jiojio的博客 292
上一篇: 哈希表的概念(散列表)
下一篇: for(auto &i:s)、for(auto i:s)在C++中的含义
快苏排序OAO
博客等级 码龄5年 273粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快苏排序OAO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值