📅  最后修改于: 2023-12-03 15:14:03.207000             🧑  作者: Mango
在C++中,unordered_map是一种关联容器,它以键值对的形式存储数据,可快速搜索和访问值。unordered_map提供了许多方法来管理其元素,其中一个非常有用的方法是at()。
unordered_map at()方法的语法非常简单:
unordered_map::mapped_type& unordered_map::at(const unordered_map::key_type &key);
其中,unordered_map::mapped_type
是该键映射到的值的类型(即值类型),unordered_map::key_type
是键的类型。在这个函数中,我们需要传递键参数,该函数返回值类型的引用。
使用at()方法可以在C++中访问unordered_map中的值。如果在容器中不存在该键,则方法会引发std::out_of_range
异常。因此,at()方法在使用时应注意:
#include <iostream>
#include <unordered_map>
#include <stdexcept>
int main() {
std::unordered_map<std::string, int> myMap = {{"A", 1}, {"B", 2}, {"C", 3}};
try {
std::cout << myMap.at("A") << std::endl; // 输出1
std::cout << myMap.at("D") << std::endl; // 触发异常
}
catch(const std::out_of_range& e) {
std::cerr << "Key not found in map: " << e.what() << '\n';
}
return 0;
}
通过at(),我们可以轻松访问unordered_map中的值,并且当键不存在时,还能够通过异常处理来防止程序的崩溃。
在C++中,unordered_map使用哈希表来实现,因此,at()方法的性能非常高。它提供了与[]操作符相同的O(1)复杂度,因为它使用了哈希表的查找算法。
需要注意的是,如果我们使用[]操作符来访问unordered_map中的值,当键不存在时,操作符会创建一个新元素。但是如果使用at()方法来访问不存在的键,则会引发一个异常。
在C++中,unordered_map at()方法是一种非常有用的方式来访问一个容器中的值,而且它的性能也非常优秀。在实际开发中,我们应该注意at()方法的语法和异常处理,避免出现无法预料的程序异常。