在基本掌握unordered_map容器及其迭代器的基础下,本节将带领读者一起学习如何获取unordered_map容器中元素的value。

前面我们提到unordered_map容器和map容器一样都重载了'[]'符号,所以能够通过'[]'添加或查看value;还有find()输入key获取指向value的迭代器;其实我们还能通过at()、equal_range()(此时equal_range()使用是基于unordered_map容器键存在的唯一性)来获取value,count()查看value是否存在。

下面我们将通过代码来分别展示这4种方法:

#include<bits/stdc++.h>//万能头,以效率为中心 
#include<string>
#include<utility>
#include<unordered_map>//包含头文件,养成好习惯 
/*3种访问unordered_map中value的方法*/
using namespace std;
void test()
{
unordered_map<int ,string> ump{{0,"Dptcpp"},{1,"编程问答"},{2,"计算机二级C语言"},{3,"数据结构教程"},{4,"Java教程"}};//建议这样初始化 ,直观具体
/*1.at()*/
 cout << "找出所有key=4的值:"<<ump.at(4)<<'\n';
 /*2.find()*/
 cout << "找出所有key=3的值:"<< ump.find(3)->second << '\n';
 /*3.'[]'*/
cout << "找到key=0的值:" << ump[0] << "\n";
/*4.equal_range()*/
pair<unordered_map<int ,string>::iterator,unordered_map<int ,string>::iterator > range = ump.equal_range(1);
cout << "找到key=1的值:" << range.first->second ;
}
int main(){
    test();
    return 0;
}

编译结果如下:

获取unordered_map容器中元素的value

成功根据指示键找到值!

在知道key值的情况下,我们最好使用at(),其次是find(),最后是'[]',原因在于如果没有存在key="输入参数"的元素,at()和find()都会报错,而'[]'直接给你创建一个“[输入的key]=默认值的元素(不同数据类型有不同的默认值),虽然不存在报错问题,但是却失去了对数据的绝对控制,破坏数据的完整性,equal_range()最不推荐了,但读者也要知道通过它也能获取元素的value。

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)