unordered_map at () в C ++

Опубликовано: 4 Декабря, 2021

Предпосылка: неупорядоченные карты в STL

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}
};
// returns the reference ie the mapped
// value with the key 'second'
cout<< "Value of key mp['second'] = "
<<mp.at( "second" )<<endl;
try
{
mp.at();
}
catch ( const out_of_range &e)
{
cerr << "Exception at " << e.what() << endl;
}
return 0;
}

Выход:

Value of key mp["second"] = 2
Exception at _Map_base::at

Практическое применение: функция std :: unordered_map :: at () может использоваться для доступа к отображаемому значению и, таким образом, может редактировать, обновлять и т. Д.

// CPP program to illistrate
// 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;
}

Выход:

Компьютерное приложение: 100
Химия: 98
Физика: 97
Математика: 100

Чем unordered_map at () отличается от оператора unordered_map ()

  • Как at (), так и operator [] используются для ссылки на элемент, присутствующий в данной позиции , единственная разница в том, что at () выдает исключение вне допустимого диапазона, тогда как operator [] показывает неопределенное поведение, т.е. если operator [] используется для найдите значение, соответствующее ключу, и если ключ отсутствует в неупорядоченной карте, он сначала вставит ключ в карту, а затем присвоит значение по умолчанию «0», соответствующее этому ключу. .
Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .