Создание множества и добавление элементов
Часть раздела Логика и управление потоком путешествия по C++ на Coddy — урок 36 из 56.
Теперь, когда вы знаете, что такое множество, давайте узнаем, как его создать и добавить в него элементы. Чтобы добавить элементы в std::set, вы используете метод .insert().
Вот как создать пустое множество и добавить элементы:
std::set<int> numbers;
numbers.insert(5);
numbers.insert(2);
numbers.insert(8);Самая важная особенность множеств заключается в том, что они автоматически отклоняют дубликаты. Если вы попытаетесь вставить одно и то же значение дважды, множество останется неизменным:
numbers.insert(5); // Это не добавит еще одну 5
numbers.insert(5); // И это тожеПосле всех этих вставок ваше множество будет содержать только три уникальных элемента: 2, 5 и 8 (автоматически отсортированных). Повторные попытки вставить 5 просто игнорируются, что и делает множества такими полезными для хранения коллекций уникальных данных.
Задание
ЛегкоСоздайте программу, которая демонстрирует особенность уникальности элементов в std::set, добавляя несколько целых чисел в набор, включая дубликаты, а затем отображая итоговый размер, чтобы доказать, что дубликаты автоматически игнорируются.
Будут предоставлены следующие входные данные:
- Целое число
n, представляющее количество целых чисел для вставки - Затем
nцелых чисел, которые необходимо вставить в набор
Ваша программа должна:
- Создать пустой
std::set<int> - Считать количество целых чисел для вставки
- Использовать цикл для чтения каждого целого числа и вставки его в набор с помощью метода
.insert() - После всех вставок вывести итоговый размер набора, используя метод
.size() - Вывести сообщение, показывающее, сколько попыток вставки дубликатов было проигнорировано
Используйте следующий точный формат вывода:
Set size: [final_size]
Duplicates ignored: [number_of_duplicates]Количество проигнорированных дубликатов должно быть рассчитано как разница между общим количеством попыток вставки и итоговым размером набора. Это демонстрирует, что наборы автоматически поддерживают уникальность, отклоняя повторяющиеся значения, что является их ключевой особенностью для хранения коллекций уникальных элементов.
Шпаргалка
Чтобы создать множество и добавить элементы, используйте .insert():
std::set<int> numbers;
numbers.insert(5);
numbers.insert(2);
numbers.insert(8);Множества автоматически отклоняют дубликаты — при многократной вставке одного и того же значения сохраняется только одна копия:
numbers.insert(5); // Это не добавит еще одну 5
numbers.insert(5); // Это тоже не добавитИспользуйте .size(), чтобы получить количество уникальных элементов в множестве.
Попробуйте сами
#include <iostream>
#include <set>
using namespace std;
int main() {
// Считать количество целых чисел для вставки
int n;
cin >> n;
// Создать пустое множество
set<int> mySet;
// TODO: Напишите свой код здесь
// Используйте цикл, чтобы считать n целых чисел и вставить их в множество
// Вычислите, сколько дубликатов было проигнорировано
// Вывести результаты
cout << "Set size: " << mySet.size() << endl;
cout << "Duplicates ignored: " << /* вычислить дубликаты */ << endl;
return 0;
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Указатели и память
Что такое указатель?Оператор взятия адресаОператор разыменованияНулевые указателиУказатели и массивыДинамическая память и 'new'Освобождение памяти и 'delete'Итоги: Практика с указателями2Векторы (динамические массивы)
Знакомство с std::vectorСоздание вектораДобавление элементовДоступ к элементамРазмер вектораИтерация с помощью цикла ForRange-based цикл ForУдаление элементовИтоги: операции с векторами5Проект: Инструмент инвентаризации
Настройка проектаДобавление и обновление товаров3Проект: Список задач
Обзор проектаДобавление задачи6Множества (уникальные элементы)
Введение в std::setСоздание множества и добавление элементовПроверка наличия элементовУдаление элементовИтерация по множествуПовторение: уникальные числа