C++官网参考链接:https://cplusplus.com/reference/map/map/at/
公有成员函数
<map>
std::map::at
mapped_type& at (const key_type& k);
const mapped_type& at (const key_type& k) const;
访问元素
返回对键k标识的元素的映射值的引用。
如果k与容器中任何元素的键不匹配,则该函数抛出out_of_range异常。
形参
k
访问其映射值的元素的键值。
成员类型key_type是容器中元素的键的类型,在map中定义为其第一个模板形参(Key)的别名。
返回值
对元素的映射值的引用,其键值等价于k。
如果map对象是const限定的,该函数返回对const mapped_type的引用。否则,它返回对mapped_type的引用。
成员类型mapped_type是容器中映射值的类型(参见map成员类型(map member types))。在map中,这是它的第二个模板参数(T)的别名。
用例
// map::at
#include <iostream>
#include <string>
#include <map>
int main ()
{
std::map<std::string,int> mymap = {
{ "alpha", 0 },
{ "beta", 0 },
{ "gamma", 0 } };
mymap.at("alpha") = 10;
mymap.at("beta") = 20;
mymap.at("gamma") = 30;
for (auto& x: mymap) {
std::cout << x.first << ": " << x.second << '\n';
}
return 0;
}
输出:
复杂度
size中的对数。
iterator的有效性
没有变化。
数据竞争
容器被访问(const和非const版本都不会修改容器)。
调用方可以修改被访问的映射值。同时访问或修改其他元素是安全的。
异常安全
强保证:如果抛出异常,则容器中不会有任何更改。
如果k不是map中某个元素的键,则抛出out_of_range。