unorder_map有3种常见按键查值方法。

使用头文件<unordered_map>和<iostream>,以及命名空间std。

第一种是按键访问。如果键存在,则返回键对应的值;如果键不存在,则返回0;

 #include<unordered_map>
#include<iostream> using namespace std; int main() {
unordered_map<int, int> test_map;
cout << test_map[] << endl; // 键0不存在,输出0
test_map[] = ; // 加入键0
cout << test_map[] << endl; // 键0存在,输出键对应的值
return ;
} /*
0
1
*/

利用第一种访问方式,可以简单地往哈希表里面添加元素。

     test_map[]++;
test_map[] = test_map[] + ;
cout << test_map[] << endl << test_map[]; /*
1
1
可以发现上面两种方式都可以往哈希表中添加元素和改变元素的值,用起来比较方便。
在进行比较的时候,不需要判断哈希表中键是否存在。
*/

第二种是使用哈希表成员函数count查询,count函数计算哈希表中要查询键的个数,在哈希表中返回的值只有0和1

即哈希表中是否存在要查询的键。

 #include<unordered_map>
#include<iostream> using namespace std; int main() {
unordered_map<int, int> test_map; test_map[] = ;
test_map[] = ;
cout << test_map.count() << endl << test_map.count() << endl << test_map.count() << endl;
12   // 哈希表中存在键0和1,因此输出为1 1 0
return ;
} /*
1
1
0
*/

第三种方式是使用哈希表成员函数find进行查询,如果返回的值是哈希表的迭代器类型。

如果等于哈希表的末尾,则表示键不在哈希表中。

如果不等于哈希表的末尾,则可以通过iter->first来访问要查询的键,通过iter->second来访问要查询的键对应的值。

 #include<unordered_map>
#include<iostream> using namespace std; int main() {
unordered_map<int, int> test_map; test_map[] = ;
int key = ;
unordered_map<int, int>::iterator tmp = test_map.find(key);
if (tmp == test_map.end()) {
cout << "no key " << key << endl;
}
else {
cout << "exist key " << key << endl;
cout << "first: " << tmp->first << " second: " << tmp->second << endl;
}
cout << endl;
key = ;
tmp = test_map.find(key);
if (tmp == test_map.end()) {
cout << "no key " << key << endl;
}
else {
cout << "exist key " << key << endl;
cout << "first: " << tmp->first << " second: " << tmp->second << endl;
}
return ;
} /*
exist key 0
first: 0 second: 1 no key 1
*/

以上就是unordered_map的几种按键查询比较。

最近在LeetCode上做题的时候,对unordered_map的查询以及返回值有一些疑惑,所以写了这篇博客。

如果对上面有问题或者上面有错误,欢迎大家在评论区留言

C++中unordered_map几种按键查询比较的更多相关文章

  1. T-sql中的三种分页查询

    USE [APS_Future_FT] GO /****** Object: StoredProcedure [dbo].[A_PagingAndSorting] Script Date: 2013/ ...

  2. ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法

    ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法 语法 第一种: 通过使用Oracle语句块  --指定文档所有部门都能查看 declare cursor TABLE_DEPT and ...

  3. ArcGIS中的三种查询

    ArcGIS runtime SDK for WPF/Silverlight中的三种常用的查询:QueryTask.FindTask.IdentifyTask都是继承自ESRI.ArcGIS.Clie ...

  4. Java三大框架之——Hibernate中的三种数据持久状态和缓存机制

    Hibernate中的三种状态   瞬时状态:刚创建的对象还没有被Session持久化.缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID. 持久状态:对象经过 ...

  5. 浅谈SQL Server中的三种物理连接操作

    简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...

  6. MySQL中的两种临时表

    MySQL中的两种临时表 伯乐在线2016-07-06 05:16:52阅读(4556)评论(3) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场.举报 ...

  7. SQL Server中的三种物理连接操作

    来源:https://msdn.microsoft.com/zh-cn/library/dn144699.aspx 简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Out ...

  8. SQL中的5种聚集函数

    作为一个刚毕业进入这行的菜鸟,婶婶的觉的那种大神.大牛到底是怎样炼成的啊,我这小菜鸟感觉这TMD要学的东西这多啊,然后就给自己定了许多许多要学习的东西,可是有人又不停地给你灌输:东西不在多而要精通!我 ...

  9. MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析

    文章出处:http://inter12.iteye.com/blog/1430144 MYSQL的全表扫描,主键索引(聚集索引.第一索引),非主键索引(非聚集索引.第二索引),覆盖索引四种不同查询的分 ...

随机推荐

  1. NPOI升级版本问题

    最近做了一个导出Word的功能,需要样式与排版果断选择了NPOI,本以为支持Excel很好,支持Word应该也不会错吧,万万没想到还是挣扎了小一星期. 我的项目是一个13年项目,NPOI版本还很旧,我 ...

  2. Dynamics CRM Performance Issue when CRM Forms Opening

    事情发生在Dynamics CRM 8.2.2版本,客户新升级到这个版本几个月的时间. 突然有一天,客户反映为什么我们打开CRM Form页面的时候loading的时间这么长呢?大概会需要5-15分钟 ...

  3. 如何在Linux环境下用虚拟机跑Windows!

    文章目录 #0x0 Windows #0x1 安装虚拟机 #0x10 下载: #0x11 安装: #0x2 安装虚拟机windows #0x20 下载镜像 #0x21 安装镜像 #0x3 使用Wind ...

  4. scala 数据结构(四):列表 List

    1 列表 List-创建List 基本介绍 Scala中的List 和Java List 不一样,在Java中List是一个接口,真正存放数据是ArrayList,而Scala的List可以直接存放数 ...

  5. HotSpot的对象模型(5)

    Java对象通过Oop来表示.Oop指的是 Ordinary Object Pointer(普通对象指针).在 Java 创建对象实例的时候创建,用于表示对象的实例信息.也就是说,在 Java 应用程 ...

  6. 02-Python运算符

    一.简介 以10 - 5为例,‘10 - 5’叫做表达式,表达式可以分解成运算符和操作数.整数10和5被称为操作数.‘-’称为运算符. 二.算术运算符 运算符 描述 示例 结果 + 加 - 两个对象相 ...

  7. bzoj1699[Usaco2007 Jan]Balanced Lineup排队*&bzoj1636[Usaco2007 Jan]Balanced Lineup*

    bzoj1699[Usaco2007 Jan]Balanced Lineup排队 bzoj1636[Usaco2007 Jan]Balanced Lineup 题意: 询问区间最大值减区间最小值的差. ...

  8. Go Pentester - TCP Proxy

    Building a TCP Proxy Using io.Reader and io.Writer Essentially all input/output(I/O). package main i ...

  9. Harbor打怪升级

    目录 一.目标 二.V1.4升级至V1.6 三.V1.6升级至V1.9 四.V1.9升级至V2.0 五.写在最后 一.目标 Harbor V1.4版本升级至V2.0 注: Harbor升级需要注意的是 ...

  10. 集训作业 洛谷P1469 找筷子

    这个题的代码真的是短的不得了呢. 有个神奇的东西叫异或,写起来是这个样子的^. 这个东西可以查看2个数的二进制某位是否相同,相同取0,不同取1.虽然我用的不熟,但我可以想出来,如果2个相同的数异或,答 ...