Conjuntos en C++
Establecer (establecer)
— es un contenedor que ordena automáticamente los elementos añadidos en orden ascendente. Pero al agregar valores idénticos, set
solo almacenará una instancia del mismo (multiset
- multiset- puede contener duplicados). Cuando se agrega un nuevo elemento al conjunto, inmediatamente encaja en su lugar para no violar el orden de clasificación.
Los conjuntos en C++ se definen en la biblioteca de plantillas estándar STL
a través de la clase set (multiset)
.
Los conjuntos son árboles binarios rojo-negro. Las operaciones de búsqueda, eliminación e inserción tienen una complejidad logarítmica.
Para usar conjuntos, debe incluir la biblioteca “
set
”:
#incluir <establecer>
Establecer declaración:
establecer<int> miConjunto; // Declarar un conjunto vacío.
multiconjunto<int> miConjunto; // Declarar un conjunto múltiple vacío.
Funciones para trabajar con un conjunto (set)
empty()
- comprueba la ausencia de elementos en el contenedor
size()
- Devuelve el número de elementos en el contenedor
clear()
- Borra el contenedor
insert()
- Inserta elementos
erase()
- Elimina elementos
count()
- Devuelve el número de elementos que coinciden con una clave determinada
find()
- Encuentra un elemento con una clave específica
lower_bound()
- Devuelve un iterador al primer elemento no menor que el valor dado
upper_bound()
- Devuelve un iterador al primer elemento mayor que el valor especificado
Ejemplo de set y multiset
#incluye <iostream>
#incluir <establecer>
utilizando el espacio de nombres estándar;
int principal()
{
establecer<int> miConjunto1; // declaró un conjunto vacío
multiconjunto<int> miConjunto2; // declaró un multiconjunto vacío
// agregar elementos al conjunto
miConjunto1.insertar(1);
miConjunto1.insertar(2);
miConjunto1.insertar(3);
miConjunto1.insertar(1);
// agregar elementos al conjunto múltiple
miConjunto2.insertar(1);
miConjunto2.insertar(2);
miConjunto2.insertar(3);
miConjunto2.insertar(1);
establecer<int>::iterarlo; //crear un iterador
for(it = mySet1.begin(); it != mySet1.end(); it++) { // Mostrar todos los elementos
cout << (*it) << " "; // conjuntos
}
cout << fin;
for(it = mySet2.begin(); it != mySet2.end(); it++) { // Muestra todos los elementos
cout << (*it) << " "; // multiconjuntos
}
devolver 0;
}