Mentre scriviamo del codice può capitarci di dover gestire una serie di elementi unici tra loro o di associare ad essi un altro valore.
Le classi set e map ci aiutano proprio in questo.
Il set può contenere una serie di elementi, a patto che questi siano unici tra loro.
Le funzioni della classe set sono le seguenti:
begin(): ritorna un iteratore che punta al primo elemento
end(): ritorna un iteratore che punta all’ultimo elemento
size(): ritorna il numero di elementi presenti nel set
empty(): ritorna true se il set è vuoto
insert(T): aggiunge un elemento al set
erase(T): rimuove un elemento dal set
#include <iostream>
#include <set>
using namespace std;
int main() {
//Tra '<' e '>' metto il tipo di elementi
set<int> serie;
//Aggiungo 3 numeri alla serie
serie.insert(10);
serie.insert(20);
serie.insert(30);
//Provo ad aggiungere un numero già presente nella serie
serie.insert(10);
//Stampo il numero di elementi della serie
cout << serie.size() << endl;
//Stampo il contenuto della serie
for (set<int>::iterator i = serie.begin(); i != serie.end(); i++) {
cout << *i << " ";
}
cout << endl;
//Rimuovo un elemento dalla serie
serie.erase(10);
//Verifico se la serie è vuota
cout << "vuoto = " << serie.empty();
return 0;
}
La map contiene una coppia di elementi. Il primo si chiama chiave e come per il set è unico nella map, mentre il secondo si chiama valore e può anche non essere unico. Questo ci torna utile quando dobbiamo memorizzare una serie di coppie chiave-valore, come ad esempio un id e uno username.
Le funzioni della classe set sono le seguenti:
begin(): ritorna un iteratore che punta al primo elemento
end(): ritorna un iteratore che punta all’ultimo elemento
size(): ritorna il numero di elementi presenti nella map
empty(): ritorna true se la map è vuota
insert(std::pair<T, T>): aggiunge una coppia chiave-valore alla map
erase(T): rimuove un elemento dalla map
clear(): rimuove tutti gli elementi dalla map
#include <iostream>
#include <map>
using namespace std;
int main() {
//Tra '<' e '>' metto il tipo di elementi
map<int, string> dict;
//Aggiungo 3 coppie alla map
dict.insert(pair<int, string>(10, "AAA"));
dict.insert(pair<int, string>(20, "BBB"));
dict.insert(pair<int, string>(30, "AAA"));
//Provo ad aggiungere una coppia con chiave già presente nella map
dict.insert(pair<int, string>(10, "CCC"));
//Stampo il numero di elementi della map
cout << dict.size() << endl;
//Stampo il contenuto della map
for (map<int, string>::iterator i = dict.begin(); i != dict.end(); i++) {
cout << i->first << " -> " << i->second << ", ";
}
cout << endl;
//Rimuovo un elemento dalla map
dict.erase(10);
//Verifico se la map è vuota
cout << "vuoto = " << dict.empty();
//Rimuovo tutti gli eloementi dalla map
dict.clear();
return 0;
}