Set e Map in C++

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.

Set

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

Map

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;
}
© Nicola Bovolato 2020