我们要在 STL 中的 unordered_map 容器中获取某个键对应的值,可以使用下标的方式和使用 at 的方式。
unordered_map[key]
参数 | 描述 |
---|---|
key | 需要查找的键。 |
借助重载的 [ ]
运算符,就可以在 unordered_map 容器中直接找到该键对应的值。
该模板类中重载了 []
运算符,其功能是可以向访问数组中元素那样,只要给定某个键值对的键 key,就可以获取该键对应的值。注意,如果当前容器中没有以 key 为键的键值对,则其会使用该键向当前容器中插入一个新键值对。
unordered_map.at(key)
参数 | 描述 |
---|---|
key | 需要查找的键。 |
返回容器中存储的键 key 对应的值,如果 key 不存在,则会抛出 out_of_range 异常。
使用下标索引的形式,获取 unordered_map 中的元素
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
unordered_map<int, string> unordered_map1{{1, "Mon"}, {2, "Thu"}, {3, "Wed"}};
auto item = unordered_map1[2];
cout << "Item = " << item << endl;
item = unordered_map1[4];
cout << "Item = " << item << endl;
return 0;
}
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们首先使用了 unordered_map 下标索引的方式,查找了键为 2 的值,因为键存在,因此,获取了正确的值,最后,我们再次获取了不存在的键,此时返回了对应的空值。
使用 at 的形式,获取 unordered_map 中的元素
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
unordered_map<int, string> unordered_map1{{1, "Mon"}, {2, "Thu"}, {3, "Wed"}};
auto item = unordered_map1.at(2);
cout << "Item = " << item << endl;
item = unordered_map1.at(4);
cout << "Item = " << item << endl;
return 0;
}
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们首先使用了 at 的方式,查找了键为 2 的值,因为键存在,因此,获取了正确的值,最后,我们再次获取了不存在的键,此时返回了异常。
我们要在 STL 中的 unordered_map 容器中获取某个键对应的值,可以使用下标的方式和使用 at 的方式。