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