Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Практическая работа №8.Множества
Цель работы: изучение создания множеств в С++.
Задачи: 1. Изучить теоретический материал 2. Написать программу согласно индивидуальному варианту задания. 3. Ответить на контрольные вопросы. 4. Оформить отчет.
Теоретический материал
В STL есть контейнер — set, он реализует такие сущности как множество и мультимножество. По сути это контейнеры, которые содержат некоторое количество отсортированных элементов. Да, именно так, при добавлении нового элемента в множество он сразу становится на свое место так, чтобы не нарушать порядка сортировки. Потому как в множестве и мультимножестве все элементы сортируются автоматически. Но вот вопрос, в чем же разница между множествами и мультимножествами? Множества содержат только уникальные элементы, а мультимножества могут содержать дубликаты, вот такая вот небольшая разница. Для того, чтобы использовать множество или мультимножество необходимо подключить следующий заголовочный файл: #include <set>
Давайте рассмотрим простой пример использования множества в программе:
Чтобы объявить множество, необходимо подключить заголовочный файл set, это сделано в строке 2. Для объявления множества необходимо воспользоваться классом set, строка 8. То есть в восьмой строке, мы создали объект — множество с именем mySet, элементы которого имеют тип данных char. Строки 11-18 добавляют в множество новые элементы, до этого, множество было пустое. Чтобы добавить элемент в множество, достаточно воспользоваться методом insert(), которому в параметре передать новый элемент. Ну и в строке 20 как обычно выполняется вывод множества на экран, с помощью функции copy(). А теперь давайте по порядку будем разбираться, почему же у нас получился такой вывод программы. Во-первых, обратите внимание на порядок добавления элементов в коде, строки 11-18, и на реальный порядок расположения этих элементов в множестве. Порядок ввода и реальный порядок элементов в множестве — разный, это связано с тем, что элементы множества автоматически сортируются. Еще одной очень важной деталью является то, что в множество не сохранились дубликаты, хотя дубликаты были при добавлении элементов в множество. Как видно в выводе программы, каждый элемент множества уникален.
Сразу же хочу обратить ваше внимание на то, что это программа была простым примером использования МНОЖЕСТВА. Давайте немного переделаем эту программу:
multiset<char> mySet; // объявили пустое множество
Изменили всего одну строку, чтобы показать пример с мультимножеством. Как вы уже могли догадаться, достаточно было вместо класса set воспользоваться классом multiset — класс мультимножества. Весь остальной код не меняем и смотрим на результат работы программы:
Результат другой, так как мультимножество может хранить дубликаты элементов, все введенный буквы — сохранились. Ну и конечно все элементы отсортировались, как и в множестве. Из всего этого стоит запомнить то, что порядок ввода элементов в множество никак не влияет на порядок хранения в множестве. А также, мультимножество умеет хранить дубликаты, в отличие от множества. Если вам нужно объявить множество,используйте класс set, если же вы хотите объявить мультимножество — воспользуйтесь классом multiset. Автоматическая сортировка элементов в множествах накладывает определенные ограничения. Например, в множествах нельзя изменить значение какого-то элемента напрямую, так как это могло бы сломать сортировку. Поэтому, если вам сильно нужно это сделать, вы сначала должны удалить старый элемент, а потом добавить новый. Рассмотрим пример программы с удалением и добавлением нового элемента:
В этом примере мы сначала удаляем элемент множества, это делается в строке 26, с помощью метода erase(). Потом мы добавляем новый элемент, строка 33. Кроме этого, обратите внимание на метод — find(), строка 25, он возвращает указатель на первый элемент множества, который равен его аргументу. Еще один интересный метод, которым мы воспользовались в программе называется — lower_bound(), строка 32. Метод lower_bound() возвращает указатель на первый элемент множества, значение которого больше либо равно аргументу. Вот вывод программы:
Задание 1. Реализовать программу для работы с множествами. Предусмотреть функции заполнения множества (на выбор пользователя: случайными числами или с клавиатуры), удаления отдельного элемента и вывода элементов на экран. Контрольные вопросы 9. Что такое множество? 10. Какие операции допустимы над множествами? 11. как реализовать множество в С++? 12. В чем отличие множества от мультимножества?
Содержание отчета 1. Титульный лист 2. Цели, задачи работы 3. Индивидуальное задание 4. Листинг программы 5. Результат работы (скриншот) 5. Ответы на контрольные вопросы
|
||||||||||
Последнее изменение этой страницы: 2021-04-20; просмотров: 79; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.22.163 (0.009 с.) |