STL map获取元素

STL map获取元素教程

我们要在 STL 中的 map 容器中获取某个键对应的值,可以使用下标的方式和使用 at 的方式。

STL map获取元素详解

语法

map[key]

参数

参数 描述
key 需要查找的键。

说明

借助重载的 [ ] 运算符,就可以在 map 容器中直接找到该键对应的值。

技术细节

只有当 map 容器中确实存有包含该指定键的键值对,借助重载的 [ ] 运算符才能成功获取该键对应的值;反之,若当前 map 容器中没有包含该指定键的键值对,则此时使用 [ ] 运算符将不再是访问容器中的元素,而变成了向该 map 容器中增添一个键值对。

其中,该键值对的键用 [ ] 运算符中指定的键,其对应的值取决于 map 容器规定键值对中值的数据类型,如果是基本数据类型,则值为 0;如果是 string 类型,其值为 “”,即空字符串(即使用该类型的默认值作为键值对的值)。

STL map at详解

语法

map.at(key)

参数

参数 描述
key 需要查找的键。

说明

通过 map 容器调用 at() 成员方法,可以成功找到键时,返回该键对应的值;如果键不存在,会导致 at() 成员方法查找失败,并抛出 out_of_range 异常。

案例

使用索引获取map元素

使用下标索引的形式,获取 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,如下图所示:

11_STL map访问元素.png

我们首先使用了 map 下标索引的方式,查找了键为 2 的值,因为键存在,因此,获取了正确的值,最后,我们再次获取了不存在的键,此时返回了对应的空值。

使用at获取map元素

使用 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,如下图所示:

12_STL map访问元素.png

我们首先使用了 at 的方式,查找了键为 2 的值,因为键存在,因此,获取了正确的值,最后,我们再次获取了不存在的键,此时返回了异常。

STL map获取元素教程总结

我们要在 STL 中的 map 容器中获取某个键对应的值,可以使用下标的方式和使用 at 的方式。