📜  C++ STL-map.at()函数(1)

📅  最后修改于: 2023-12-03 15:29:50.259000             🧑  作者: Mango

C++ STL-map.at()函数

介绍

at() 函数是 C++ STL 中的 map 类模板所提供的一个函数。它用于查找键值,返回与该键相关联的值。如果请求的键不存在,则该函数将引发 out_of_range 异常。

map 是一种关联式容器,其元素由键和值组成。每个键都只能出现一次,而且键是唯一的(如果已存在的话,插入一个包含相同键的元素将不起作用)。

语法

以下是 at() 函数的语法:

mapped_type& at(const key_type& k);
const mapped_type& at(const key_type& k) const;

at() 函数的两个版本都接受一个参数 k,该参数是用于搜索的键值。第一个版本返回一个可修改的引用,可以用于修改 map 中与该键相关联的值。第二个版本返回一个不可修改的常量引用,不能用于修改 map 中与该键相关联的值。

示例
#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m;

    // 添加键值对到 map
    m["foo"] = 11;
    m["bar"] = 42;

    // 根据键查找相应的值
    std::cout << m.at("foo") << std::endl;
    std::cout << m.at("bar") << std::endl;

    // 尝试查找一个不存在的键,将抛出异常
    try {
        std::cout << m.at("baz") << std::endl;
    } catch (const std::out_of_range& e) {
        std::cerr << e.what() << std::endl;
    }

    return 0;
}

输出结果为:

11
42
std::out_of_range: map::at
总结

at() 函数提供了一种安全的搜索 map 中键值的方法,如果请求的键不存在,函数会抛出异常。但是要注意,at() 函数只适用于有显式搜索需求的情况,如果只是简单地想查看 map 中是否存在某个键,可以使用 count() 函数来代替,它会返回这个键的出现次数。