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. 通过注入DLL修改API代码实现钩取(一)

    通过注入DLL修改API代码实现钩取(一) Ox00 大致思路 通过CreateRemoteThread函数开辟新线程,并将DLL注入进去 通过GetProcessAddress函数找到需钩取的API ...

  2. Let's GO(一)

    近来开始学Go,留此博客以记录学习过程,顺便鞭策自己更加努力. 人生苦短,Let's GO! Let's GO(一) Let's GO(二) Let's GO(三) Let's GO(四) 简单介绍 ...

  3. nuxt.js使用scss

    1>安装一些loader npm i node-sass sass-loader scss-loader --save-dev 2>在nuxt.config.js中配置(需要全局使用的sc ...

  4. SQL列转行,行转列实现

    在工作中,大家可能会遇到一些SQL列转行.行转列的问题,恰好,我也遇到了,就在此记录一下.此处所用的是SQLServer2008R2. 行转列,列转行,都要预先知道要要处理多少数据,在此我就以三种方案 ...

  5. DOM 和 BOM 区别

    DOM, DOCUMENT, BOM, WINDOW 区别DOM 是为了操作文档出现的 API,document 是其的一个对象:BOM 是为了操作浏览器出现的 API,window 是其的一个对象. ...

  6. python 面向对象专题(十一):特殊方法 (四)__get__、__set__、__delete__ 描述符(四)描述符用法建议

    使用特性以保持简单 内置的 property 类创建的其实是覆盖型描述符,__set__ 方法和__get__ 方法都实现了,即便不定义设值方法也是如此. 特性的__set__ 方法默认抛出 Attr ...

  7. Python之进程、线程、协程篇

    本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...

  8. 面试锦囊 | HTTP 面试门路

    前言 本文已经收录到我的 Github 个人博客,欢迎大佬们光临寒舍: 我的 Github 博客 学习清单: 零.前置知识 幂等的概念是指同一个请求方法执行多次和仅执行一次的效果完全相同 一.PUT ...

  9. FileNotFoundError: [WinError 2] 系统找不到指定的文件。 解决方案

    用Idle运行Python脚本的时候发现如下错误: Traceback (most recent call last): File "C:\Users\DangKai\Desktop\pyt ...

  10. 【Python学习笔记三】一个简单的python爬虫

    这里写爬虫用的requests插件 1.一般那3.x版本的python安装后都带有相应的安装文件,目录在python安装目录的Scripts中,如下:   2.将scripts的目录配置到环境变量pa ...