Метод find
Метод find класса unordered_map выполняет поиск элемента
по заданному ключу. В первый параметр мы передаем ключ, который
нужно найти. Метод возвращает итератор на найденный элемент, а
если элемент с таким ключом отсутствует - возвращает итератор
end. Сама хеш-таблица при этом не изменяется.
Синтаксис
umap.find(key)
Пример
Давайте создадим хеш-таблицу и найдем в ней элемент
с ключом "b":
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map<string, int> umap = {
{"a", 1},
{"b", 2},
{"c", 3}
};
auto it = umap.find("b");
if (it != umap.end()) {
cout << it->first << " " << it->second << endl;
} else {
cout << "not found" << endl;
}
return 0;
}
Результат выполнения кода:
"b 2"
Пример
А теперь попробуем найти ключ, которого нет в хеш-таблице:
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map<string, int> umap = {
{"a", 1},
{"b", 2},
{"c", 3}
};
auto it = umap.find("d");
if (it != umap.end()) {
cout << it->first << " " << it->second << endl;
} else {
cout << "not found" << endl;
}
return 0;
}
Результат выполнения кода:
"not found"
Пример
Давайте переберем все элементы хеш-таблицы с помощью
метода find и выведем их на экран:
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map<string, int> umap = {
{"a", 1},
{"b", 2},
{"c", 3}
};
string keys[] = {"a", "b", "c", "d"};
for (const string& key : keys) {
auto it = umap.find(key);
if (it != umap.end()) {
cout << it->first << " " << it->second << endl;
}
}
return 0;
}
Результат выполнения кода:
"a 1"
"b 2"
"c 3"
Смотрите также
-
класс
unordered_map,
который представляет собой хеш-таблицу -
метод
count,
который считает количество элементов с заданным ключом -
метод
contains,
который проверяет наличие ключа в хеш-таблице -
метод
at,
который возвращает значение по ключу