首页 > 编程语言 > 详细

C++中unordered_map几种按键查询比较

时间:2020-08-01 21:41:15      阅读:159      评论:0      收藏:0      [点我收藏+]

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

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

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

 1 #include<unordered_map>
 2 #include<iostream>
 3 
 4 using namespace std;
 5 
 6 int main() {
 7     unordered_map<int, int> test_map;
 8     cout << test_map[0] << endl;  // 键0不存在,输出0
 9     test_map[0] = 1;  // 加入键0
10     cout << test_map[0] << endl;  // 键0存在,输出键对应的值
11     return 0;
12 }
13 
14 /*
15 0
16 1
17 */

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

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

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

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

 1 #include<unordered_map>
 2 #include<iostream>
 3 
 4 using namespace std;
 5 
 6 int main() {
 7     unordered_map<int, int> test_map;
 8 
 9     test_map[0] = 1;
10     test_map[1] = 2;
11     cout << test_map.count(0) << endl << test_map.count(1) << endl << test_map.count(2) << endl;
12    //  哈希表中存在键0和1,因此输出为1 1 0
13     return 0;
14 }
15 
16 /*
17 1
18 1
19 0
20 */

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

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

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

 1 #include<unordered_map>
 2 #include<iostream>
 3 
 4 using namespace std;
 5 
 6 int main() {
 7     unordered_map<int, int> test_map;
 8 
 9     test_map[0] = 1;
10     int key = 0;
11     unordered_map<int, int>::iterator tmp = test_map.find(key);
12     if (tmp == test_map.end()) {
13         cout << "no key " << key << endl;
14     }
15     else {
16         cout << "exist key " << key << endl;
17         cout << "first: " << tmp->first << " second: " << tmp->second << endl;
18     }
19     cout << endl;
20     key = 1;
21     tmp = test_map.find(key);
22     if (tmp == test_map.end()) {
23         cout << "no key " << key << endl;
24     }
25     else {
26         cout << "exist key " << key << endl;
27         cout << "first: " << tmp->first << " second: " << tmp->second << endl;
28     }
29     return 0;
30 }
31 
32 /*
33 exist key 0
34 first: 0 second: 1
35 
36 no key 1
37 */

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

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

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

C++中unordered_map几种按键查询比较

原文:https://www.cnblogs.com/proton/p/13415663.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!