📜  C++ STL中的map :: at()(1)

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

C++ STL中的map::at()

map 是在C++ STL中实现的关联式容器。map::at()方法是其中的一个成员函数,用于返回给定键的关联值。

语法
mapped_type& at(const key_type& key);
const mapped_type& at(const key_type& key) const;

初始版本需要 C++11 及更高版本的支持。

参数
  • key:要搜索的元素的键。
返回值

一个指向与给定键相关联的键/值对的引用。如果给定键不存在,则抛出 std::out_of_range 异常。

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

int main()
{
    std::map<int, std::string> myMap = { {1, "one"}, {2, "two"}, {3, "three"} };

    std::cout << "myMap[1]: " << myMap[1] << std::endl;        // 输出:"myMap[1]: one"
    std::cout << "myMap.at(2): " << myMap.at(2) << std::endl;  // 输出:"myMap.at(2): two"
    std::cout << "myMap[4]: " << myMap[4] << std::endl;        // 输出:"myMap[4]: "

    try
    {
        std::cout << "myMap.at(5): " << myMap.at(5) << std::endl;
    }
    catch (const std::out_of_range &e)
    {
        std::cerr << "Out of Range error: " << e.what() << std::endl;
    }

    return 0;
}

在这个例子中,当 myMap.at(5) 被调用时,它会抛出一个 std::out_of_range 异常。

使用

通常,at() 函数用于访问 map 中指定键的值。如果给定键不存在则会抛出异常,因此它可以用于调试和错误处理。和 [] 运算符不同,仅使用 at() 不会新建一个元素,如果查询的键不存在则会抛出异常而不是创建新的空值。

总结

map::at() 函数的用途主要是获取指定键在 map 中关联的值,其中异常处理是需要注意的问题。在某些场合下,通过 at() 函数可以更好地调试和查找 bug。