Класс set
Класс set - это ассоциативный контейнер, который хранит
только уникальные элементы. Элементы внутри множества всегда
автоматически сортируются по возрастанию. При добавлении
элемента, который уже есть в множестве, он не будет добавлен
повторно. При создании множества можно указать тип хранимых
значений. Например, set<int> будет хранить целые числа.
Синтаксис
#include <set>
set<тип> имя;
Пример
Давайте создадим множество целых чисел и добавим в него
несколько элементов с помощью метода insert:
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> st;
st.insert(3);
st.insert(1);
st.insert(2);
st.insert(3);
for (int elem : st) {
cout << elem << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3
Как видите, элемент 3 был добавлен только один раз,
а все элементы автоматически отсортировались по возрастанию.
Пример
Давайте проверим, содержит ли множество определённый элемент,
с помощью метода count. Этот метод возвращает 1,
если элемент есть, и 0, если его нет:
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> st = {1, 2, 3, 4, 5};
cout << st.count(3) << endl;
cout << st.count(10) << endl;
return 0;
}
Результат выполнения кода:
1
0
Пример
Давайте удалим элемент из множества с помощью метода
erase и посмотрим на результат:
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> st = {1, 2, 3, 4, 5};
st.erase(3);
for (int elem : st) {
cout << elem << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 4 5