[ЗВУК] Как и для вектора, множество можно создавать, указывая конкретные значения объектов, которые в нем будут находиться. Давайте, например, сохраним множество названий месяцев с помощью фигурных скобок. Январь, февраль, март. Ну, и на этом остановимся. Давайте добавим даже март дважды, чтобы показать, что он там окажется всего один раз. Выведем этот словарь с помощью той же функции PrintSet, которая умеет распечатывать словарь, состоящий из строк. Вызываем эту функцию, компилируем код, запускаем и видим, что у нас в словаре три элемента: февраль, январь и март. Они отсортировались как строки в словаре. Кроме того, конечно, у нас март теперь всего один раз встречается в этом множестве, а не два. Ну, и давайте, наконец, покажем, что, как и другие контейнеры, множества можно сравнивать. И тем самым мы на самом деле еще раз продемонстрируем, что порядок добавления в множество не имеет значения. Давайте, скажем, я создам еще одно похожее множество. Я создал еще одно похожее множество, в котором элементы лежат уже в другом порядке, но их как будто бы меньше. Давайте теперь я даже не буду их распечатывать, а просто попробую их сравнить. Выведу результаты сравнения этих множеств. Сравню на ==. Компилирую код. Никаких проблем нет, запускаю и вижу единицу. Эти множества равны. Контейнер set сам за нас отсортировал элементы и выкинул все дубли. И, конечно, что же еще можно сделать с множеством? Можно быстро проверять, есть ли конкретный элемент в множестве. Для этого мне подойдет метод count. Скажем, как проверить, есть ли у меня конкретный месяц? Я выведу количество вхождений этого месяца в мое множество. Чтобы не было лишнего вывода, я удалю вот эту строчку со сравнением. Итак, сколько январей в моем множестве? Один январь. Итак, мы изучили как обычный порядковый контейнер vector, который хранит набор элементов, так и ассоциативные контейнеры map и set. В принципе, они тоже могут жить друг с другом. В частности, мы уже видели словарь, в ключах которого были векторы. Кроме того, мы, например, по вектору можем создать словарь. Давайте вот это вот все уберем. Создадим вектор строк, в этом векторе могут быть повторяющиеся элементы. Ну, скажем, "a", "b" и "a". Что если я теперь захочу сложить эти элементы в множество? Мне не нужно писать цикл. Мне не нужно писать цикл по вектору, складывая поочередно все элементы в множество. Я могу написать вот так: создать множество строк по вектору, взять все элементы от начала вектора до конца вектора и сложить их в множество. Давайте я распечатаю это множество и увижу, что у меня получилось действительно множество. Мой код не компилируется, потому что я не подключил библиотеку vector, [ЗВУК] Теперь он компилируется, я запускаю его и вижу, что у меня получилось множество из двух элементов, a и b. Итак, я могу создавать множество из вектора. Точно так же аналогичным синтаксисом я могу создать и вектор из множества. Таким образом, все контейнеры C++ могут спокойно взаимодействовать друг с другом.