Проверка наличия элементов
Часть раздела Логика и управление потоком путешествия по C++ на Coddy — урок 37 из 56.
При работе с множествами часто возникает необходимость проверить, существует ли конкретный элемент, прежде чем выполнять над ним операции. Метод .count() предоставляет простой способ проверить наличие элемента в вашем множестве.
Так же, как и в случае с картами, метод .count() возвращает 1, если элемент существует в множестве, и 0, если нет. Это делает его идеальным для условных проверок:
std::set<int> numbers = {10, 20, 30};
if (numbers.count(20)) {
std::cout << "Found 20 in the set!" << std::endl;
} else {
std::cout << "20 is not in the set" << std::endl;
}Этот подход гораздо безопаснее, чем попытка прямого доступа к элементам, особенно когда вы не уверены в их существовании. Вы можете использовать .count() для проверки пользовательского ввода, предотвращения ошибок или принятия решений на основе того, что в данный момент хранится в вашем наборе.
Задание
ЛегкоСоздайте программу, которая демонстрирует, как безопасно проверять наличие элементов в std::set перед выполнением операций над ними. Эта задача проверит ваше понимание метода .count() для верификации элементов.
Будут предоставлены следующие входные данные:
- Целое число
n, представляющее количество элементов, которые нужно изначально добавить в набор - Затем
nцелых чисел для вставки в набор - Целое число
m, представляющее количество элементов для поиска - Затем
mцелых чисел для проверки их наличия в наборе
Ваша программа должна:
- Создать пустой
std::set<int> - Прочитать количество элементов для добавления и вставить их в набор с помощью
.insert() - Прочитать количество элементов для поиска
- Для каждого искомого элемента использовать метод
.count(), чтобы проверить, существует ли он в наборе - Выводить соответствующие сообщения в зависимости от того, найден элемент или нет
- После всех поисков вывести общее количество найденных элементов
Используйте следующий точный формат вывода:
Для каждого результата поиска:
Searching for [number]: FoundДля ненайденных элементов:
Searching for [number]: Not foundИтоговая сводка в конце:
Total found: [count] out of [total_searches]Используйте numbers.count(searchValue), чтобы проверить, существует ли элемент в наборе. Если метод возвращает 1, элемент существует; если возвращает 0, элемент не существует. Используйте счетчик, чтобы отслеживать, сколько элементов было успешно найдено в ходе операций поиска.
Шпаргалка
Используйте .count(), чтобы проверить, существует ли элемент в наборе. Он возвращает 1, если элемент существует, и 0, если нет:
std::set<int> numbers = {10, 20, 30};
if (numbers.count(20)) {
std::cout << "Found 20 in the set!" << std::endl;
} else {
std::cout << "20 is not in the set" << std::endl;
}Этот метод безопаснее, чем попытка прямого доступа к элементам, и отлично подходит для условных проверок и валидации входных данных.
Попробуйте сами
#include <iostream>
#include <set>
using namespace std;
int main() {
// Считать количество элементов для добавления в множество
int n;
cin >> n;
// Создать пустое множество
set<int> numbers;
// Считать и вставить n элементов в множество
for (int i = 0; i < n; i++) {
int element;
cin >> element;
numbers.insert(element);
}
// Считать количество элементов для поиска
int m;
cin >> m;
int foundCount = 0;
// TODO: Напишите свой код ниже
// Для каждого искомого элемента:
// 1. Считать искомое значение
// 2. Использовать numbers.count(searchValue), чтобы проверить, существует ли оно
// 3. Вывести соответствующее сообщение
// 4. Обновить foundCount, если элемент найден
// Вывести итог
cout << "Total found: " << foundCount << " out of " << m << endl;
return 0;
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Указатели и память
Что такое указатель?Оператор взятия адресаОператор разыменованияНулевые указателиУказатели и массивыДинамическая память и 'new'Освобождение памяти и 'delete'Итоги: Практика с указателями2Векторы (динамические массивы)
Знакомство с std::vectorСоздание вектораДобавление элементовДоступ к элементамРазмер вектораИтерация с помощью цикла ForRange-based цикл ForУдаление элементовИтоги: операции с векторами5Проект: Инструмент инвентаризации
Настройка проектаДобавление и обновление товаров3Проект: Список задач
Обзор проектаДобавление задачи6Множества (уникальные элементы)
Введение в std::setСоздание множества и добавление элементовПроверка наличия элементовУдаление элементовИтерация по множествуПовторение: уникальные числа