Метод contains
Метод contains класса unordered_map проверяет, содержится ли в контейнере элемент с заданным ключом. В единственный параметр мы передаем ключ, наличие которого необходимо проверить. Метод возвращает значение типа bool: true, если ключ найден, и false, если ключа в контейнере нет.
Данный метод появился в стандарте C++20. В более ранних версиях для проверки наличия ключа обычно использовали метод count или find. Метод contains делает код более читаемым и выразительным.
Синтаксис
umap.contains(key)
Пример
Давайте создадим unordered_map и проверим наличие в нем ключа "b":
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map<string, int> umap = {
{"a", 1},
{"b", 2},
{"c", 3}
};
if (umap.contains("b")) {
cout << "Key exists" << endl;
} else {
cout << "Key not found" << endl;
}
return 0;
}
Результат выполнения кода:
"Key exists"
Пример
Теперь проверим наличие ключа, которого нет в контейнере:
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map<string, int> umap = {
{"a", 1},
{"b", 2},
{"c", 3}
};
if (umap.contains("d")) {
cout << "Key exists" << endl;
} else {
cout << "Key not found" << endl;
}
return 0;
}
Результат выполнения кода:
"Key not found"
Пример
Метод contains удобно использовать в условиях для проверки перед вставкой нового элемента:
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map<string, int> umap = {
{"a", 1},
{"b", 2}
};
string key = "c";
if (!umap.contains(key)) {
umap[key] = 3;
cout << "Added" << endl;
}
cout << umap["c"] << endl;
return 0;
}
Результат выполнения кода:
"Added"
3
Смотрите также
-
класс
unordered_map,
который представляет собой ассоциативный контейнер -
метод
find,
который ищет элемент по ключу -
метод
count,
который возвращает количество элементов с заданным ключом -
метод
insert,
который вставляет элементы в контейнер