Контейнерные классы C++<set>
В стандартной библиотеке C++<set>является ассоциативным контейнером, который хранит набор уникальных элементов и сортирует их в определённом порядке.
<set>Обеспечивает эффективные операции поиска, вставки и удаления элементов. Он реализован на основе красно-чёрного дерева и поэтому имеет логарифмическую временную сложность для поиска, вставки и удаления.
<set>Типы элементов, хранящихся в контейнере, должны удовлетворять следующим условиям:
- Тип элемента должен поддерживать сравнение.
- Тип элемента должен допускать копирование и присваивание.
Синтаксис
Подключите заголовочный файл:
#include <set>
Объявите контейнер set
std::set<元素类型> 容器名;
Общие операции
insert(元素): Вставить элемент.erase(元素): Удалить элемент.find(元素): Найти элемент.size(): Вернуть количество элементов в контейнере.empty(): Проверить, пуст ли контейнер.
Пример
Ниже приведён пример использования<set>Простой пример, включающий вставку элемента, поиск, удаление и вывод результатов.
Пример
#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>может повысить эффективность и читаемость программы.