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. POJ3040贪心

    题意:作为创纪录的牛奶生产的奖励,农场主约翰决定开始给Bessie奶牛一个小的每周津贴.FJ有一套硬币N种(1≤N≤20)不同的面额,每枚硬币是所有比他小的硬币面值的倍数,例如1美分硬币.5美分硬币. ...

  2. testNG jar包启动找不到org.testng.TestNG

    主要是因为打包时依赖的jar包没有打入,网上有很多需要将对应的jar单独拷贝出来然后通过classpath引用启动,但是感觉这个就是个无底洞.拷贝了这么多个包最后还是说找不到ObjectId 启动命令 ...

  3. 03 Vue实例成员

    Vue实例 1.el:实例 new Vue({ el: '#app' }) // 实例与页面挂载点一一对应 // 一个页面中可以出现多个实例对应多个挂载点 // 实例只操作挂载点内部内容 2.data ...

  4. Python函数02/函数的动态参数/函数的注释/名称空间/函数的嵌套/global以及nolocal的用法

    Python函数02/函数的动态参数/函数的注释/名称空间/函数的嵌套/global以及nolocal的用法 目录 Python函数02/函数的动态参数/函数的注释/名称空间/函数的嵌套/global ...

  5. unity-TextAsset

    定义: 当把Text files导到unity,将会变成TextAsset. 支持的格式: .txt .html .htm .xml .bytes .json .csv .yaml .fnt 注意 不 ...

  6. Arcgis api for js实现服务端地图的增删改查

    < !DOCTYPE html > <html xmlns = "http://www.w3.org/1999/xhtml" > <head > ...

  7. Cyber Security - Palo Alto Firewall V-Wires

    Leveraging V-Wires Bridge two physical connections and apply security Policies without influencing a ...

  8. 区间dp复习 之 tyvj 1198 矩阵连乘

    题目描述 一个\(n*m\)矩阵由\(n\)行\(m\)列共\(n*m\)个数排列而成.两个矩阵\(A\)和\(B\)可以相乘当且仅当\(A\)的列数等于\(B\)的行数.一个\(N*M\)的矩阵乘以 ...

  9. 修改ElementUI样式的几种方式

    ElementUI是一款非常强大的前端UI组件库,它默认定义了很多美观的样式,但是我们在实际开发过程中不可避免地遇到需要修改ElementUI默认样式.下面总结了几种修改默认样式的方法. 1. 新建全 ...

  10. WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用

    例如:<asp:TextBox id="TextBox1" runat="server"></asp:TextBox> <INPU ...