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;
}