Trier un ensemble non ordonné à l'aide de la bibliothèque standard C++ (STL)

C++Beginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous allez apprendre à trier un ensemble non ordonné en utilisant le langage de programmation C++. Vous allez découvrir les concepts de base de l'ensemble non ordonné et sa mise en œuvre.

Ouvrir le terminal et configurer le répertoire de travail

Pour commencer, ouvrez le terminal et tapez la commande suivante pour accéder au répertoire project :

cd project

Créer un fichier C++

Maintenant, créez un nouveau fichier appelé main.cpp dans le répertoire project. Ce fichier contiendra le code pour trier l'ensemble non ordonné.

touch main.cpp

Écrire le code

Copiez et collez le code suivant dans le fichier main.cpp.

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

bool cmp(int x, int y)
{
    if (x > y)
        return true;
    else
        return false;
}

//Fonction pour afficher les éléments de l'ensemble non ordonné à l'aide d'un itérateur
void show(unordered_set<int> s)
{
    //Déclaration d'un itérateur pour parcourir l'ensemble non ordonné
    unordered_set<int>::iterator i;

    for (i = s.begin(); i!= s.end(); i++)
    {
        cout << *i << "  "; //Accès aux éléments de l'ensemble non ordonné en utilisant * car i stocke l'adresse de chaque élément
    }

    cout << endl;
}

int main()
{
    cout << "\n\nBienvenue à LabEx :-)\n\n\n";
    cout << " =====  Programme pour démontrer le tri d'un ensemble non ordonné, en CPP  ===== \n\n\n\n";

    cout << " *** L'ensemble non ordonné supprime automatiquement les éléments dupliqués et maintient un ordre aléatoire. *** \n\n";

    cout << " *** Cet ordre aléatoire dépend de la fonction de hachage utilisée en interne. *** \n\n";

    cout << " *** L'ensemble non ordonné peut être trié en copiant ses éléments dans un Vector. *** \n\n";

    //Déclaration de l'ensemble non ordonné (ensemble non ordonné d'entiers)
    unordered_set<int> s;

    //Remplissage des éléments en utilisant la méthode insert()
    cout << "\n\nRemplissage de l'ensemble non ordonné avec des entiers dans un ordre aléatoire."; //Contrairement à l'ensemble, cela n'est pas trié automatiquement

    s.insert(5);
    s.insert(39);
    s.insert(64);
    s.insert(82);
    s.insert(35);
    s.insert(54);

    cout << "\n\nLes éléments de l'ensemble non ordonné avant le tri sont : ";
    show(s);

    //Déclaration d'un vecteur et initialisation avec les éléments de l'ensemble non ordonné
    vector<int> v(s.begin(), s.end());

    //Tri des éléments du vecteur par ordre décroissant en utilisant un comparateur personnalisé
    sort(v.begin(), v.end(), cmp);

    cout << "\n\nLes éléments de l'ensemble non ordonné après le tri par ordre décroissant en utilisant une méthode de tri personnalisée sont : \n";

    //Déclaration d'un itérateur pour parcourir le vecteur
    vector<int>::iterator it;

    for (it = v.begin(); it!= v.end(); it++)
    {
        cout << *it << "  "; //Accès aux éléments du vecteur en utilisant * car i stocke l'adresse de chaque élément
    }

    cout << "\n\n\n";

    return 0;
}

Compiler et exécuter le code

Pour compiler le programme et créer un fichier exécutable, exécutez la commande suivante dans le terminal :

g++ main.cpp -o main

Cette commande créera un fichier exécutable nommé main.

Pour exécuter le code, exécutez la commande suivante :

./main

Vous devriez voir la sortie du programme dans le terminal.

Terminer le laboratoire

Copiez le code final dans le fichier ~/project/main.cpp :

// ~/project/main.cpp
#include <iostream>
#include <bits/stdc++.h>

using namespace std;

bool cmp(int x, int y)
{
    if (x > y)
        return true;
    else
        return false;
}

//Fonction pour afficher les éléments de l'ensemble non ordonné à l'aide d'un itérateur
void show(unordered_set<int> s)
{
    //Déclaration d'un itérateur pour parcourir l'ensemble non ordonné
    unordered_set<int>::iterator i;

    for (i = s.begin(); i!= s.end(); i++)
    {
        cout << *i << "  "; //Accès aux éléments de l'ensemble non ordonné en utilisant * car i stocke l'adresse de chaque élément
    }

    cout << endl;
}

int main()
{
    cout << "\n\nBienvenue à LabEx :-)\n\n\n";
    cout << " =====  Programme pour démontrer le tri d'un ensemble non ordonné, en CPP  ===== \n\n\n\n";

    cout << " *** L'ensemble non ordonné supprime automatiquement les éléments dupliqués et maintient un ordre aléatoire. *** \n\n";

    cout << " *** Cet ordre aléatoire dépend de la fonction de hachage utilisée en interne. *** \n\n";

    cout << " *** L'ensemble non ordonné peut être trié en copiant ses éléments dans un Vector. *** \n\n";

    //Déclaration de l'ensemble non ordonné (ensemble non ordonné d'entiers)
    unordered_set<int> s;

    //Remplissage des éléments en utilisant la méthode insert()
    cout << "\n\nRemplissage de l'ensemble non ordonné avec des entiers dans un ordre aléatoire."; //Contrairement à l'ensemble, cela n'est pas trié automatiquement

    s.insert(5);
    s.insert(39);
    s.insert(64);
    s.insert(82);
    s.insert(35);
    s.insert(54);

    cout << "\n\nLes éléments de l'ensemble non ordonné avant le tri sont : ";
    show(s);

    //Déclaration d'un vecteur et initialisation avec les éléments de l'ensemble non ordonné
    vector<int> v(s.begin(), s.end());

    //Tri des éléments du vecteur par ordre décroissant en utilisant un comparateur personnalisé
    sort(v.begin(), v.end(), cmp);

    cout << "\n\nLes éléments de l'ensemble non ordonné après le tri par ordre décroissant en utilisant une méthode de tri personnalisée sont : \n";

    //Déclaration d'un itérateur pour parcourir le vecteur
    vector<int>::iterator it;

    for (it = v.begin(); it!= v.end(); it++)
    {
        cout << *it << "  "; //Accès aux éléments du vecteur en utilisant * car i stocke l'adresse de chaque élément
    }

    cout << "\n\n\n";

    return 0;
}

Résumé

Dans ce laboratoire, vous avez appris à trier un ensemble non ordonné en langage de programmation C++. Vous avez appris les concepts de base de l'ensemble non ordonné et sa mise en œuvre à l'aide d'un vecteur et de la méthode sort de la bibliothèque standard C++ (STL). Vous avez également appris à déclarer un ensemble non ordonné et à le remplir d'éléments.