Класс unordered_set
Класс unordered_set - это ассоциативный контейнер, который хранит набор уникальных элементов в неупорядоченном виде. В отличие от set, элементы здесь не сортируются, а располагаются в зависимости от их хеш-значений, что обеспечивает очень высокую скорость поиска, вставки и удаления (в среднем за константное время). Если вы попытаетесь добавить элемент, который уже есть в контейнере, он не будет добавлен повторно. Для использования класса необходимо подключить заголовочный файл <unordered_set>.
Синтаксис
#include <unordered_set>
unordered_set<тип_данных> имя_контейнера;
Пример
Давайте создадим unordered_set для хранения целых чисел и добавим в него несколько элементов, включая дубликат:
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<int> mySet;
mySet.insert(1);
mySet.insert(2);
mySet.insert(3);
mySet.insert(2); // duplicate, will not be added
for (int elem : mySet) {
cout << elem << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода (порядок может отличаться):
3 2 1
Пример
Давайте проверим наличие элемента в контейнере с помощью метода find:
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<string> mySet = {"abcde", "12345"};
if (mySet.find("abcde") != mySet.end()) {
cout << "Element found" << endl;
} else {
cout << "Element not found" << endl;
}
if (mySet.find("qwerty") != mySet.end()) {
cout << "Element found" << endl;
} else {
cout << "Element not found" << endl;
}
return 0;
}
Результат выполнения кода:
"Element found"
"Element not found"
Смотрите также
-
класс
unordered_set,
который представляет собой неупорядоченный набор -
метод
insert,
который добавляет элементы в контейнер -
метод
find,
который ищет элемент в контейнере -
метод
erase,
который удаляет элементы из контейнера