我们要在 STL 中的 map 容器中获取某个键对应的值,可以使用下标的方式和使用 at 的方式。
map[key]
参数 | 描述 |
---|---|
key | 需要查找的键。 |
借助重载的 [ ]
运算符,就可以在 map 容器中直接找到该键对应的值。
只有当 map 容器中确实存有包含该指定键的键值对,借助重载的 [ ]
运算符才能成功获取该键对应的值;反之,若当前 map 容器中没有包含该指定键的键值对,则此时使用 [ ]
运算符将不再是访问容器中的元素,而变成了向该 map 容器中增添一个键值对。
其中,该键值对的键用 [ ]
运算符中指定的键,其对应的值取决于 map 容器规定键值对中值的数据类型,如果是基本数据类型,则值为 0;如果是 string 类型,其值为 “”,即空字符串(即使用该类型的默认值作为键值对的值)。
map.at(key)
参数 | 描述 |
---|---|
key | 需要查找的键。 |
通过 map 容器调用 at() 成员方法,可以成功找到键时,返回该键对应的值;如果键不存在,会导致 at() 成员方法查找失败,并抛出 out_of_range 异常。
使用下标索引的形式,获取 map 中的元素
#include <iostream>
#include <map>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
map<int, string> map1{{1, "Mon"}, {2, "Thu"}, {3, "Wed"}};
auto item = map1[2];
cout << "Item = " << item << endl;
item = map1[4];
cout << "Item = " << item << endl;
return 0;
}
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们首先使用了 map 下标索引的方式,查找了键为 2 的值,因为键存在,因此,获取了正确的值,最后,我们再次获取了不存在的键,此时返回了对应的空值。
使用 at 的形式,获取 map 中的元素
#include <iostream>
#include <map>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
map<int, string> map1{{1, "Mon"}, {2, "Thu"}, {3, "Wed"}};
auto item = map1.at(2);
cout << "Item = " << item << endl;
item = map1.at(4);
cout << "Item = " << item << endl;
return 0;
}
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们首先使用了 at 的方式,查找了键为 2 的值,因为键存在,因此,获取了正确的值,最后,我们再次获取了不存在的键,此时返回了异常。
我们要在 STL 中的 map 容器中获取某个键对应的值,可以使用下标的方式和使用 at 的方式。