Метод at
Метод at класса map возвращает ссылку на значение, связанное с указанным ключом. В параметр мы передаем ключ, по которому нужно найти элемент. Если ключ присутствует в контейнере, метод возвращает ссылку на соответствующее значение. Если ключа нет, метод выбрасывает исключение std::out_of_range. В отличие от оператора [], метод at не создает новый элемент при отсутствии ключа.
Синтаксис
map.at(key)
Пример
Давайте создадим словарь с парами чисел и выведем значение по ключу 2:
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<int, string> m = {{1, "a"}, {2, "b"}, {3, "c"}};
cout << m.at(2) << endl;
return 0;
}
Результат выполнения кода:
"b"
Пример
Давайте попробуем обратиться по ключу 5, которого нет в словаре, и перехватим исключение:
#include <iostream>
#include <map>
#include <stdexcept>
using namespace std;
int main()
{
map<int, string> m = {{1, "a"}, {2, "b"}, {3, "c"}};
try
{
cout << m.at(5) << endl;
}
catch (const out_of_range& e)
{
cout << "Key not found" << endl;
}
return 0;
}
Результат выполнения кода:
"Key not found"
Пример
Давайте изменим значение элемента через ссылку, возвращаемую методом at:
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<int, string> m = {{1, "a"}, {2, "b"}, {3, "c"}};
m.at(1) = "z";
cout << m.at(1) << endl;
return 0;
}
Результат выполнения кода:
"z"