Ordenar cadenas por longitud en C++

C++Beginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a ordenar cadenas según su longitud utilizando un método de clasificación personalizado en el lenguaje de programación C++. También aprenderá a implementar la lógica de clasificación personalizada y a ordenar los elementos de un conjunto no ordenado en un orden específico.

Crear un nuevo archivo

El primer paso es crear un nuevo archivo. Abra una terminal y vaya al directorio ~/proyecto. Cree un nuevo archivo llamado main.cpp usando su editor de texto preferido.

cd ~/proyecto
touch main.cpp

Escribir el código

Agregue el siguiente código al archivo main.cpp. Este código ordenará un conjunto de cadenas según su longitud.

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

using namespace std;

//Devuelve true si la primera cadena es de mayor longitud que la segunda
bool cmp(string x, string y)
{
    int n = x.length();
    int m = y.length();

    if (n > m)
        return true;
    else
        return false;
}

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

    for (i = s.begin(); i!= s.end(); i++)
    {
        cout << *i << "     "; //Accediendo a los elementos del conjunto no ordenado usando * 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 cadenas en función de la longitud, 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 cadenas)
    unordered_set<string> s;

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

    s.insert("Study");
    s.insert("Tonight");
    s.insert("Aditya");
    s.insert("Abhishek");
    s.insert("C++");
    s.insert("Hi");

    cout << "\n\nLos elementos del conjunto no ordenado antes de la clasificación son:\n ";
    show(s);

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

    //Ordenando los elementos del vector en orden descendente de su longitud usando 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 de su longitud usando un comparador personalizado son: \n";

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

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

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

    return 0;
}

Compilar y ejecutar el código

Para compilar este código, vaya al directorio ~/proyecto en la terminal y ejecute el siguiente comando:

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

La salida mostrará la lista ordenada de cadenas.

Resumen

En este laboratorio, aprendiste a ordenar un conjunto no ordenado de cadenas escribiendo un método de clasificación personalizado en el lenguaje de programación C++. También aprendiste a implementar la lógica de clasificación personalizada y a ordenar los elementos de un conjunto no ordenado en un orden específico. Este conocimiento se puede aplicar a una amplia variedad de proyectos de programación, lo que te ayudará a crear código eficiente y fácil de leer.