Utilisation de std::unordered_set en C++

C++Beginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous allez apprendre à implémenter et à utiliser std::unordered_set en C++. Un ensemble est utilisé pour stocker des valeurs uniques d'une liste et les trier automatiquement. Un ensemble non ordonné est similaire à un ensemble, sauf qu'il ne trie pas les éléments et les stocke dans un ordre aléatoire. Il supprime également automatiquement tout élément dupliqué.

Configurer le répertoire du projet

Tout d'abord, créez un dossier de projet pour contenir votre code. Ouvrez le terminal et accédez au dossier en utilisant la commande cd.

cd ~/projet
touch main.cpp

Créez un nouveau fichier appelé main.cpp à l'aide d'un éditeur de texte de votre choix.

Créer un programme pour démontrer le fonctionnement des ensembles non ordonnés

Dans cette étape, écrivez un programme pour démontrer le fonctionnement de std::unordered_set en C++. Ce programme déclarera un std::unordered_set vide, le remplira de certains éléments, supprimera un élément, puis affichera les éléments de l'ensemble.

Commencez par inclure les bibliothèques nécessaires et en créant une fonction show pour afficher les éléments de l'ensemble non ordonné à l'aide d'un itérateur.

#include <iostream>
#include <unordered_set>

void show(std::unordered_set<int> s)
{
    std::unordered_set<int>::iterator it;

    for (it = s.begin(); it!= s.end(); ++it)
    {
        std::cout << *it << " ";
    }
}

Remplir l'ensemble non ordonné avec des entiers

Dans cette étape, remplissez le std::unordered_set avec six entiers à l'aide de la méthode insert.

int main()
{
    std::unordered_set<int> s;
    s.insert(5);
    s.insert(39);
    s.insert(64);
    s.insert(82);
    s.insert(35);
    s.insert(54);

    std::cout << "Les éléments de l'ensemble non ordonné sont : \n";
    show(s);

    return 0;
}

Supprimer un élément de l'ensemble non ordonné

Dans cette étape, supprimez un élément de l'ensemble non ordonné à l'aide de la méthode erase. Ensuite, affichez l'ensemble mis à jour.

int main()
{
    std::unordered_set<int> s;
    s.insert(5);
    s.insert(39);
    s.insert(64);
    s.insert(82);
    s.insert(35);
    s.insert(54);

    std::cout << "Les éléments de l'ensemble non ordonné sont : \n";
    show(s);

    s.erase(39);
    std::cout << "\nAprès avoir supprimé l'élément 39 de l'ensemble non ordonné à l'aide de la méthode erase(), il devient : \n";
    show(s);

    return 0;
}

Compiler et exécuter le code

Pour compiler et exécuter le code, utilisez la commande suivante dans le terminal :

g++ main.cpp -o main && ./main

La sortie sera :

Les éléments de l'ensemble non ordonné sont :
54 35 5 64 39 82
Après avoir supprimé l'élément 39 de l'ensemble non ordonné à l'aide de la méthode erase(), il devient :
54 35 5 64 82

Code complet de main.cpp

Voici le code complet pour main.cpp :

#include <iostream>
#include <unordered_set>

void show(std::unordered_set<int> s)
{
    std::unordered_set<int>::iterator it;

    for (it = s.begin(); it!= s.end(); ++it)
    {
        std::cout << *it << " ";
    }
}

int main()
{
    std::unordered_set<int> s;
    s.insert(5);
    s.insert(39);
    s.insert(64);
    s.insert(82);
    s.insert(35);
    s.insert(54);

    std::cout << "Les éléments de l'ensemble non ordonné sont : \n";
    show(s);

    s.erase(39);
    std::cout << "\nAprès avoir supprimé l'élément 39 de l'ensemble non ordonné à l'aide de la méthode erase(), il devient : \n";
    show(s);

    return 0;
}

Résumé

Dans ce laboratoire, vous avez appris à implémenter et à utiliser std::unordered_set en C++. std::unordered_set est utilisé pour stocker des valeurs uniques et élimine automatiquement tout doublon. Contrairement à std::set, il ne trie pas les éléments et les stocke dans un ordre aléatoire.