Множества
Множество - это неупорядоченный набор элементов одного типа. В отличие от массива элементы не имеют четкого места для хранения, все что можно сказать - есть ли элемент во множестве или нет. Повторное добавление одного и того же элемента не допускается (ошибка не возникает, просто операция не выполняется).
Множества, к примеру, удобно использовать для сокращения операций сравнения. Например, в задаче "проверить, принадлежит ли символ к определенному набору" вместо большого количества сравнений можно сформировать множество и выполнять поиск по нему.
Использование множеств требует подключения библиотеки set в заголовке программы:
При описании множества следует указать какого типа элементы будут в нем содержаться.
Пример
Пример
Добавление элемента
Для добавления элемента служит функция insert().
Пример
Ввод данных напрямую во множество невозможен. Следует считывать переменные и добавлять их во множество с помощью функции insert().
Запрос количества элементов
Функция size() возвращает количество элементов.
Пример
Удаление элемента
Функция erase() удаляет указанный элемент.
Пример
Поиск элемента
Функция find() ищет указанное число. При успешном поиске возвращает указатель на это число, при неуспешном - специальную величину - множество::end().
Пример
Вывод множества
Для вывода множества следует организовать цикл по всем указателями на его элементы:
Пример
Аналогичный цикл можно делать для перебора всех элементов множества.
В стандарте C++ 11 возможен также такой вариант вывода элементов:
Нахождение наименьшего элемента
Поскольку данные во множестве упорядочены, то наименьший элемент всегда будет первым:
Время выполнения операций
Операции над отдельными элементами - find(), erase(), insert() выполняются за время, пропорциональное log N, где N - количество элементов множества.
Дополнительно
Помимо объектов типа set существуют также объекты типа multiset (позволяет хранить несколько копий одного значения, элементы также упорядочены по неубыванию) и unordered_set (хранит по одному экземпляру каждого элемента, но не упорядочен).
Подробное описание см. в документации по языку программирования и библиотекам.