Menu
Coddy logo textTech

Проверка наличия элементов

Часть раздела Логика и управление потоком путешествия по 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() для проверки пользовательского ввода, предотвращения ошибок или принятия решений на основе того, что в данный момент хранится в вашем наборе.

challenge icon

Задание

Легко

Создайте программу, которая демонстрирует, как безопасно проверять наличие элементов в std::set перед выполнением операций над ними. Эта задача проверит ваше понимание метода .count() для верификации элементов.

Будут предоставлены следующие входные данные:

  • Целое число n, представляющее количество элементов, которые нужно изначально добавить в набор
  • Затем n целых чисел для вставки в набор
  • Целое число m, представляющее количество элементов для поиска
  • Затем m целых чисел для проверки их наличия в наборе

Ваша программа должна:

  1. Создать пустой std::set<int>
  2. Прочитать количество элементов для добавления и вставить их в набор с помощью .insert()
  3. Прочитать количество элементов для поиска
  4. Для каждого искомого элемента использовать метод .count(), чтобы проверить, существует ли он в наборе
  5. Выводить соответствующие сообщения в зависимости от того, найден элемент или нет
  6. После всех поисков вывести общее количество найденных элементов

Используйте следующий точный формат вывода:

Для каждого результата поиска:

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;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком