Insiemi in C++
Imposta (imposta) — è un contenitore che ordina automaticamente gli elementi aggiunti in ordine crescente. Ma quando si aggiungono valori identici, set ne memorizzerà solo un'istanza (multiset - multiset- può contenere duplicati). Quando un nuovo elemento viene aggiunto all'insieme, va immediatamente a posto in modo da non violare l'ordinamento.  
Gli insiemi in C++ sono definiti nella libreria di modelli standard STL tramite la classe set (multiset).
Gli insiemi sono alberi binari rosso-neri. Le operazioni di ricerca, eliminazione e inserimento hanno una complessità logaritmica.
 
Per utilizzare i set, devi includere la libreria “
set”:
#include <imposta>
 
Imposta dichiarazione:
imposta<int> mioSet; // Dichiarazione di un insieme vuoto.
multiinsieme<int> mioSet; // Dichiarazione di un multiset vuoto.
 
Funzioni per lavorare con un set (set)
 
empty() - verifica l'assenza di elementi nel contenitore
 
size() - Restituisce il numero di elementi nel contenitore
 
clear() - Cancella il contenitore
 
insert() - Inserisce elementi
 
erase() - Rimuove gli elementi
 
count() - Restituisce il numero di elementi corrispondenti a una data chiave
 
find() - Trova un elemento con una chiave specifica
 
lower_bound() - Restituisce un iteratore al primo elemento non inferiore al valore dato
 
upper_bound() - Restituisce un iteratore al primo elemento maggiore del valore specificato
 
 
Esempio di insiemi e multiinsiemi
#include <iostream>
#include <imposta>
utilizzando lo spazio dei nomi std;
int principale()
{
    imposta<int> mioSet1; // ha dichiarato un insieme vuoto
    multiinsieme<int> mioSet2; // ha dichiarato un multiset vuoto
    // aggiunge elementi all'insieme
    mySet1.insert(1);
    mioInsieme1.insert(2);
    mioSet1.insert(3);
    mySet1.insert(1);
    // aggiunge elementi al multiset
    mySet2.insert(1);
    mioInsieme2.insert(2);
    mySet2.insert(3);
    mySet2.insert(1);
    set<int>::iterator it; // crea un iteratore
    for(it = mySet1.begin(); it != mySet1.end(); it++) { // Visualizza tutti gli elementi
        cout << (*it) << " "; // imposta
    }
    cout << finel;
    for(it = mySet2.begin(); it != mySet2.end(); it++) { // Output di tutti gli elementi
        cout << (*it) << " "; // multiset
    }
    ritorno 0;
}