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