📜  C++ STL中的map :: at()

📅  最后修改于: 2021-05-30 13:27:27             🧑  作者: Mango

映射是关联容器,以映射方式存储元素。每个元素都有一个键值和一个映射值。任何两个映射值都不能具有相同的键值。

映射:: at()

at()函数用于引用映射到键值的元素,该键值作为函数的参数给出。例如,如果我们将字符串“ hi”映射到整数1,则将整数1作为at()函数的参数传递将返回字符串“ hi”。

at()函数与运算符[]有何不同
at()函数检查容器的范围,并在尝试访问不在该范围内的元素时引发异常,而运算符[]不检查容器的范围,并且当元素不在容器中时显示未定义的行为范围被访问。

句法 :

mapname.at(key)
Parameters :
Key value mapped to the element to be fetched.
Returns :
Direct reference to the element at the given key value.

例子:

Input  :  map mymap;
          mymap['a'] = 1;
          mymap.at('a');
Output :  1

Input  :  map mymap;
          mymap["abcd"] = 7;
          mymap.at("abcd");
Output :  7

错误和异常

1.如果该键不存在于映射中,则抛出out_of_range。
2.否则,它具有强大的无异常抛出保证。

// CPP program to illustrate
// Implementation of at() function
#include 
#include 
#include 
using namespace std;
  
int main()
{
    // map declaration
    map mymap;
  
    // mapping strings to integers
    mymap["hi"] = 1;
    mymap["welcome"] = 2;
    mymap["thanks"] = 3;
    mymap["bye"] = 4;
  
    // printing the integer mapped
    // by string "thanks"
    cout << mymap.at("thanks");
    return 0;
}

输出:

3

时间复杂度: O(logn)

at()函数与运算符[]有何不同
at()函数检查容器的范围,并在尝试访问不在该范围内的元素时引发异常,而运算符[]不检查容器的范围,并且当元素不在容器中时显示未定义的行为范围被访问。

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”