📜  C++ STL中的mapase()函数(1)

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

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

在C++的STL中,map是一个关联容器,它将键和值关联在一起。map::at()map容器的一个成员函数,用于查找指定键所对应的值。

函数原型
mapped_type& at(const key_type& key);
const mapped_type& at(const key_type& key) const;
参数

参数key是要查找的键值。

返回值

函数返回指定键所对应的值的引用。

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

int main() {
    std::map<std::string, int> marks = {{"Alice", 90}, {"Bob", 75}, {"Charlie", 85}, {"David", 60}};

    // 访问指定键所对应的值
    std::cout << "Alice's mark is " << marks.at("Alice") << std::endl;

    // 访问不存在的键,会抛出std::out_of_range异常
    try {
        std::cout << "Eve's mark is " << marks.at("Eve") << std::endl;
    }
    catch (std::out_of_range& e) {
        std::cout << "Exception caught: " << e.what() << std::endl;
    }

    return 0;
}

输出:

Alice's mark is 90
Exception caught: map::at
注意事项

使用map::at()时,如果查找的键在map中不存在,会抛出std::out_of_range异常。因此,我们可以使用异常处理机制来避免程序崩溃。

如果不需要抛出异常而只是检查一个键是否存在,可以使用map::count()函数。它返回一个指定键在map中出现的次数,而这个次数要么是0(键不存在)要么是1(键存在)。

if (marks.count("Eve") > 0) {
    std::cout << "Eve's mark is " << marks.at("Eve") << std::endl;
}
else {
    std::cout << "Eve's mark is not available." << std::endl;
}