Conceptos Básicos de Contenedores de Conjuntos
Introducción a std::set en C++
Un std::set es un contenedor potente de la Biblioteca de Plantillas Estándar (STL) de C++ que almacena elementos únicos en un orden ordenado. A diferencia de otros contenedores, los conjuntos mantienen una característica específica: cada elemento aparece solo una vez, y los elementos se ordenan automáticamente durante la inserción.
Características Clave
| Característica |
Descripción |
| Unicidad |
Cada elemento puede aparecer solo una vez |
| Orden Ordenado |
Los elementos se ordenan automáticamente |
| Árbol Balanceado |
Implementado utilizando un árbol de búsqueda binaria balanceado |
| Rendimiento |
O(log n) para inserción, eliminación y búsqueda |
Declaración e Inicialización Básica
#include <set>
#include <iostream>
int main() {
// Conjunto vacío de enteros
std::set<int> numeros;
// Inicializar con valores
std::set<int> conjuntoInicial = {5, 2, 8, 1, 9};
// Constructor de copia
std::set<int> conjuntoCopia(conjuntoInicial);
return 0;
}
Operaciones Comunes
graph TD
A[Operaciones de Conjuntos] --> B[Inserción]
A --> C[Eliminación]
A --> D[Búsqueda]
A --> E[Comprobación de Tamaño]
Métodos de Inserción
std::set<int> numeros;
// Inserción de un solo elemento
numeros.insert(10);
// Inserción de múltiples elementos
numeros.insert({5, 7, 3});
// Inserción basada en rango
int arr[] = {1, 2, 3};
numeros.insert(std::begin(arr), std::end(arr));
Métodos de Eliminación
std::set<int> numeros = {1, 2, 3, 4, 5};
// Eliminar un elemento específico
numeros.erase(3);
// Eliminar un rango
numeros.erase(numeros.find(2), numeros.end());
// Vaciar el conjunto completo
numeros.clear();
Búsqueda y Consulta
std::set<int> numeros = {1, 2, 3, 4, 5};
// Comprobar la existencia de un elemento
bool existe = numeros.count(3) > 0; // true
// Encontrar un elemento
auto it = numeros.find(4);
if (it != numeros.end()) {
std::cout << "Elemento encontrado" << std::endl;
}