Ordenar Conjunto No Ordenado Utilizando STL

C++Beginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a ordenar un conjunto no ordenado en el lenguaje de programación C++. Aprenderá sobre los conceptos básicos del conjunto no ordenado y su implementación.

Abrir Terminal y Configurar Directorio de Trabajo

Para comenzar, abra el terminal y escriba el siguiente comando para navegar hasta el directorio project:

cd project

Crear un archivo C++

Ahora, cree un nuevo archivo llamado main.cpp en el directorio project. Este archivo contendrá el código para ordenar el conjunto no ordenado.

touch main.cpp

Escribir el código

Copie y pegue el siguiente código en el archivo 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;
}

//Función para imprimir los elementos del conjunto no ordenado utilizando un iterador
void show(unordered_set<int> s)
{
    //Declarando un iterador para iterar a través del conjunto no ordenado
    unordered_set<int>::iterator i;

    for (i = s.begin(); i!= s.end(); i++)
    {
        cout << *i << "  "; //Accediendo a los elementos del conjunto no ordenado utilizando * ya que i almacena la dirección de cada elemento
    }

    cout << endl;
}

int main()
{
    cout << "\n\nBienvenido a LabEx :-)\n\n\n";
    cout << " =====  Programa para demostrar la clasificación de un Conjunto No Ordenado, en CPP  ===== \n\n\n\n";

    cout << " *** El Conjunto No Ordenado automaticamente elimina los elementos duplicados y mantiene un orden aleatorio. *** \n\n";

    cout << " *** Este orden aleatorio depende de la función hash que se utiliza internamente. *** \n\n";

    cout << " *** El conjunto no ordenado se puede ordenar copiando sus elementos a un Vector. *** \n\n";

    //Declaración del Conjunto No Ordenado (Conjunto No Ordenado de enteros)
    unordered_set<int> s;

    //Llenando los elementos utilizando el método insert()
    cout << "\n\nLlenando el Conjunto No Ordenado con enteros en orden aleatorio."; //A diferencia del Conjunto, esto no se ordena automáticamente

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

    cout << "\n\nLos elementos del Conjunto No Ordenado antes de la clasificación son: ";
    show(s);

    //Declarando un vector e inicializándolo con los elementos del conjunto no ordenado
    vector<int> v(s.begin(), s.end());

    //Clasificando los elementos del vector en orden descendente utilizando un comparador personalizado
    sort(v.begin(), v.end(), cmp);

    cout << "\n\nLos elementos del Conjunto No Ordenado después de la clasificación en orden descendente utilizando un método de clasificación personalizado son: \n";

    //Declarando un iterador para iterar a través del vector
    vector<int>::iterator it;

    for (it = v.begin(); it!= v.end(); it++)
    {
        cout << *it << "  "; //Accediendo a los elementos del vector utilizando * ya que i almacena la dirección de cada elemento
    }

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

    return 0;
}

Compilar y ejecutar el código

Para compilar el programa y crear un archivo ejecutable, ejecute el siguiente comando en el terminal:

g++ main.cpp -o main

Este comando creará un archivo ejecutable llamado main.

Para ejecutar el código, ejecute el siguiente comando:

./main

Debería ver la salida del programa en el terminal.

Completar el laboratorio

Copia el código final al archivo ~/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;
}

//Función para imprimir los elementos del conjunto no ordenado utilizando un iterador
void show(unordered_set<int> s)
{
    //Declarando un iterador para iterar a través del conjunto no ordenado
    unordered_set<int>::iterator i;

    for (i = s.begin(); i!= s.end(); i++)
    {
        cout << *i << "  "; //Accediendo a los elementos del conjunto no ordenado utilizando * ya que i almacena la dirección de cada elemento
    }

    cout << endl;
}

int main()
{
    cout << "\n\nBienvenido a LabEx :-)\n\n\n";
    cout << " =====  Programa para demostrar la clasificación de un Conjunto No Ordenado, en CPP  ===== \n\n\n\n";

    cout << " *** El Conjunto No Ordenado automaticamente elimina los elementos duplicados y mantiene un orden aleatorio. *** \n\n";

    cout << " *** Este orden aleatorio depende de la función hash que se utiliza internamente. *** \n\n";

    cout << " *** El conjunto no ordenado se puede ordenar copiando sus elementos a un Vector. *** \n\n";

    //Declaración del Conjunto No Ordenado (Conjunto No Ordenado de enteros)
    unordered_set<int> s;

    //Llenando los elementos utilizando el método insert()
    cout << "\n\nLlenando el Conjunto No Ordenado con enteros en orden aleatorio."; //A diferencia del Conjunto, esto no se ordena automáticamente

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

    cout << "\n\nLos elementos del Conjunto No Ordenado antes de la clasificación son: ";
    show(s);

    //Declarando un vector e inicializándolo con los elementos del conjunto no ordenado
    vector<int> v(s.begin(), s.end());

    //Clasificando los elementos del vector en orden descendente utilizando un comparador personalizado
    sort(v.begin(), v.end(), cmp);

    cout << "\n\nLos elementos del Conjunto No Ordenado después de la clasificación en orden descendente utilizando un método de clasificación personalizado son: \n";

    //Declarando un iterador para iterar a través del vector
    vector<int>::iterator it;

    for (it = v.begin(); it!= v.end(); it++)
    {
        cout << *it << "  "; //Accediendo a los elementos del vector utilizando * ya que i almacena la dirección de cada elemento
    }

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

    return 0;
}

Resumen

En este laboratorio, has aprendido cómo ordenar un conjunto no ordenado en el lenguaje de programación C++. Has aprendido los conceptos básicos del conjunto no ordenado y su implementación utilizando un vector y el método sort de la STL. También has aprendido cómo declarar un conjunto no ordenado y cómo llenarlo con elementos.