📜  C++中的unordered_map at()(1)

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

C++中的unordered_map at()

在C++中,unordered_map是一种关联容器,它以键值对的形式存储数据,可快速搜索和访问值。unordered_map提供了许多方法来管理其元素,其中一个非常有用的方法是at()。

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是键的类型。在这个函数中,我们需要传递键参数,该函数返回值类型的引用。

unordered_map at()的用法

使用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中的值,并且当键不存在时,还能够通过异常处理来防止程序的崩溃。

unordered_map at()的性能

在C++中,unordered_map使用哈希表来实现,因此,at()方法的性能非常高。它提供了与[]操作符相同的O(1)复杂度,因为它使用了哈希表的查找算法。

需要注意的是,如果我们使用[]操作符来访问unordered_map中的值,当键不存在时,操作符会创建一个新元素。但是如果使用at()方法来访问不存在的键,则会引发一个异常。

总结

在C++中,unordered_map at()方法是一种非常有用的方式来访问一个容器中的值,而且它的性能也非常优秀。在实际开发中,我们应该注意at()方法的语法和异常处理,避免出现无法预料的程序异常。