📅  最后修改于: 2023-12-03 15:13:56.510000             🧑  作者: Mango
在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;
}