C++中的unordered_map at()函数

C++中的unordered_map at()函数

unordered_map: unordered_map是一种关联式容器,存储的元素由键值和映射值组成。键值用于唯一标识元素,映射值是与键关联的内容。键和值都可以是预定义或用户定义的任何类型。

unordered_map :: at(): C++中的这个函数 unordered_map 返回具有键k的元素的值的引用。

语法:

unordered_map.at(k);
参数:
我们想要访问其映射值的元素的键值。
返回类型:
与键值等效的元素的映射值的引用。

注意: 如果键不存在,则该方法会导致运行时错误。

// C++ program to illustrate
// std :: unordered_map :: at()
#include<iostream>
#include<string>
#include<unordered_map>
 
using namespace std;
 
int main()
{
    unordered_map<string,int> mp = {
                            {"first",1},
                            {"second",2},
                            {"third",3},
                            {"fourth",4}
    };
                                     
    // 返回引用,即键“second”对应的映射值
    cout<<"键mp ['second']的值为"
        <<mp.at("second")<<endl;
     
    try
    {
        mp.at();
    }
 
    catch(const out_of_range &e)
    {
        cerr<<"在"<<e.what()<<"处发生异常"<<endl;
    }
     
     
    return 0;
}  

输出:

键mp['second']的值为2
异常发生在_Map_base :: at

实际应用: std :: unordered_map :: at() 函数可用于访问映射值,从而可以进行编辑,更新等操作。

// CPP program to illustrate
// application of this function
// Program to correct the marks
// given in different subjects
#include<iostream>
#include<string>
#include<unordered_map>
 
using namespace std;
 
// driver code
int main()
{
    // marks in different subjects
    unordered_map<string,int> my_marks = {
                    {"Maths", 90},
                    {"Physics", 87},
                    {"Chemistry", 98},
                    {"Computer Application", 94}
                    };
         
                                     
        my_marks.at("Physics") = 97;
        my_marks.at("Maths") += 10;
        my_marks.at("Computer Application") += 6;
         
        for (auto& i: my_marks)
        {
            cout<<i.first<<": "<<i.second<<endl;
        }
     
     
     
    return 0;
}  

输出:

Computer Application: 100
Chemistry: 98
Physics: 97
Maths: 100

unordered_map at()和unordered_map operator()之间的区别

  • at()和operator[]都用于引用给定位置的元素,唯一的区别是,at()会抛出out-of-range异常,而operator[]会显示未定义的行为,即如果operator[]用于查找对应于键的值,而键不在unordered map中,则它将首先将键插入到map中,然后将默认值’0’分配给该键对应的值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程