Контейнерные классы C++<set>

В стандартной библиотеке C++<set>является ассоциативным контейнером, который хранит набор уникальных элементов и сортирует их в определённом порядке.

<set>Обеспечивает эффективные операции поиска, вставки и удаления элементов. Он реализован на основе красно-чёрного дерева и поэтому имеет логарифмическую временную сложность для поиска, вставки и удаления.

<set>Типы элементов, хранящихся в контейнере, должны удовлетворять следующим условиям:

  • Тип элемента должен поддерживать сравнение.
  • Тип элемента должен допускать копирование и присваивание.

Синтаксис

Подключите заголовочный файл:

#include <set>

Объявите контейнер set

std::set<元素类型> 容器名;

Общие операции

  • insert(元素): Вставить элемент.
  • erase(元素): Удалить элемент.
  • find(元素): Найти элемент.
  • size(): Вернуть количество элементов в контейнере.
  • empty(): Проверить, пуст ли контейнер.

Пример

Ниже приведён пример использования<set>Простой пример, включающий вставку элемента, поиск, удаление и вывод результатов.

Пример

#include <iostream>
#include <set>

int main() {
    // Объявить контейнер множества целых чисел
    std::set<int> mySet;

    // Вставка элементов
    mySet.insert(10);
    mySet.insert(20);
    mySet.insert(30);
    mySet.insert(40);

    // Вывести элементы множества
    std::cout << "Множество содержит: ";
    for (int num : mySet) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    // Найти элемент
    if (mySet.find(20) != mySet.end()) {
        std::cout << "20 есть в множестве." << std::endl;
    } else {
        std::cout << "20 отсутствует в множестве." << std::endl;
    }

    // Удалить элементы
    mySet.erase(20);

    // Снова вывести элементы множества
    std::cout << "После удаления 20 множество содержит: ";
    for (int num : mySet) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    // Проверить, пусто ли множество
    if (mySet.empty()) {
        std::cout << "Множество пусто." << std::endl;
    } else {
        std::cout << "Множество не пусто." << std::endl;
    }

    // вывести количество элементов в множестве
    std::cout << "Множество содержит " << mySet.size() << " элементов." << std::endl;

    return 0;
}

Вывод:

Set contains: 10 20 30 40 
20 is in the set.
After erasing 20, set contains: 10 30 40 
The set is not empty.
The set contains 3 elements.

Итог

<set>является очень полезным контейнером в стандартной библиотеке C++, особенно подходит для сценариев, требующих быстрого поиска, вставки и удаления. Благодаря приведённым выше примерам, начинающие могут<set>получить чёткое представление о его базовом использовании. В реальной разработке разумное использование<set>может повысить эффективность и читаемость программы.

Другие расширения