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的全表扫描,主键索引(聚集索引.第一索引),非主键索引(非聚集索引.第二索引),覆盖索引四种不同查询的分 ...

  10. 一种快速查询多点DS18B20温度的方法(转)

    源:http://hi.baidu.com/james_xiao/item/79b961c90623093e45941623 一种快速查询多点DS18B20温度的方法 引言      为了满足实时性要 ...

随机推荐

  1. .net 开源工作流比较及应用

    送上比较内容图: 鉴于这个表的内容,与公司技术与需求的结合,我们选择啦RoadFlow工作流引擎. 下面踏上RoadFlow的征程. RoadFlow的下载.部署.及使用 官方网址:http://cq ...

  2. web安全——应用(java)

    简介 由于网络技术日趋成熟,黑客们也将注意力从以往对网络服务器的攻击逐步转移到了对web应用的攻击.据最新调查,信息安全有75%都发生在web应用而非网络层面. 场景 控制访问的权限.只让可以访问的访 ...

  3. JavaScript表单处理(上)

    为了分担服务器处理表单的压力,JavaScript提供了一些解决方案,从而大大打破了处处依赖服务器的局面.  发文不易,转载请亲注明出处,谢谢! 一.表单介绍 在HTML中,表单是由<form& ...

  4. 不要告诉我你懂margin

    分类: Html/CSS | 转载请注明: 出自 海玉的博客 本文地址: http://www.hicss.net/do-not-tell-me-you-understand-margin/ 你真的了 ...

  5. NOIP2006 2k进制数

    2^k进制数 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换 ...

  6. 一个测试SQL2005数据库连接JSP档

    在这里,在SQL 2005中间InterLib数据库案例.得到InterLib/tb_booktype目录. 的影响,如下面的: watermark/2/text/aHR0cDovL2Jsb2cuY3 ...

  7. 小问题填坑,关于obj.x和obj[&quot;x&quot;]

    之前在看对象的api中for in函数时,有一个地方让我略有疑惑: var obj={ x:100, y:200, z:300 }; for(var key in obj){ if(obj.hasOw ...

  8. DRF 版本 认证

    DRF的版本 版本控制是做什么用的, 我们为什么要用 首先我们要知道我们的版本是干嘛用的呢大家都知道我们开发项目是有多个版本的 当我们项目越来越更新~版本就越来越多我们不可能新的版本出了~以前旧的版本 ...

  9. Docker部署tomcat及应用

    前提Docker已安装完成. 由于测试网无法直接连入互联网,所以在本机虚拟机内下载tomcat镜像并传到测试网主机中. 虚拟机内执行 查找tomcat镜像: # docker search tomca ...

  10. [sql]sql函数coalesce返回第一个非空的值

    下面来看几个比较有用的例子: 首先,从MSDN上看看这个函数的使用方法,coalesce函数(下面简称函数),返回一个参数中非空的值.如: SELECT  COALESCE(NULL, NULL, G ...