OpenWebinars

Lenguajes de Programación

Uso de la función Sort en C++

Conoce las utilidades de la función Sort en C++ con los ejemplos prácticos que te proponemos y por qué usar la función sort es una opción muy interesante.

Antonio José Checa Bustos

Antonio José Checa Bustos

EXPERTO en C++

Lectura 1 minutos

Publicado el 30 de octubre de 2018

Compartir

    Tabla de contenidos

La función sort la puedes encontrar en la librería estándar de C++ (STL) para hacer una orden de comparación. Vamos a ver, por qué usar la funcion sort es una opción muy interesante.

¿Por qué utilizar Sort?

Imaginemos que tenemos un contenedor vector y unos datos dentro del mismo.

#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    std::vector<int> our_vector{3, 5, 4, 1, 2};

    getchar();
    return = 0;
}

De esta forma, tener que iterar dentro del vector para que los datos estén ordenados de cualquier forma, es un poco pesado de hacer.

Una vez que C++ incluyó Sort, nos permite hacer lo siguiente para acceder a los datos del vector y ordenarlos de menor a mayor.

#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    std::vector<int> our_vector{3, 5, 4, 1, 2};

    std::sort(our_vector.begin(), our_vector.end());

    for (auto& elem : our_vector)
        std::cout << elem << “ – “ << std::endl;

    getchar();
    return = 0;
}

Si quisiéramos ordenarlos de mayor a menor, podríamos utilizar la función que está en functional, de esta forma:

#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>


int main()
{
    std::vector<int> our_vector{3, 5, 4, 1, 2};

    std::sort(our_vector.begin(), our_vector.end(), std::greater<int>());

    for (auto& elem : our_vector)
        std::cout << elem << “ – “ << std::endl;

    getchar();
    return = 0;
}

En este caso se le está pasando una función de comparación para que devuelva el mayor, si lo ejecutamos nos imprime los datos ordenados de mayor a menor.

Para que nos los muestre ordenados al revés, es decir, de menor a mayor, lo haríamos de la siguiente forma:

#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>

int main()
{
    std::vector<int> our_vector{3, 5, 4, 1, 2};

    std::sort(our_vector.begin(), our_vector.end());

    for (auto& elem : our_vector)
        std::cout << elem << “ – “ << std::endl;

    getchar();
    return = 0;
}

Compilamos y ejecutamos el código anterior, y vemos como imprime los valores al revés, de menor a mayor.

Además podemos crear una función de comparación para que devuelva el mayor, que haremos según se indica en la documentación oficial. Esta función nos va a devolver un booleano, que tenga dos parámetros del tipo correspondiente.

#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>

bool comp (const int& a, const int& b)
{
    return  a > b;
}

int main()
{
    std::vector<int> our_vector{3, 5, 4, 1, 2};

    std::sort(our_vector.begin(), our_vector.end(), &comp);

    for (auto& elem : our_vector)
        std::cout << elem << “ – “ << std::endl;

    getchar();
    return = 0;
}

Ejecutamos el código y nos devuelve los datos ordenados de mayor a menor.

También podemos hacer lo siguiente:

#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>

bool comp (const int& a, const int& b)
{
    if (a == 1)
        return false; 
    if (b ==1)
        return true;

    return  a < b;
}

int main()
{
    std::vector<int> our_vector{3, 5, 4, 1, 2};

    std::sort(our_vector.begin(), our_vector.end(), &comp);

    for (auto& elem : our_vector)
        std::cout << elem << “ – “ << std::endl;

    getchar();
    return = 0;
}

Al ejecutarlo nos muestra el valor menor al final.

Como hemos visto, Sort sirve para hacer ordenaciones, aunque haya diferentes contenedores, como set o map, que también permiten ordenación.

En los casos en los que tenemos un contenedor secuencial y queremos ordenarlo, incluso aunque que no sea un contenedor de C++, ya que podemos hacerlo nosotros, colocando el inicio y el final y haciendo la función de comparación, algo que es muy útil y esta es la funcionalidad básica de Sort.

Sigue aprendiendo a diseñar y asimilar patrones e interfaces para tus programas con este Curso de Patrones de diseño e interfaces en C++.

curso-cpp-interfaces

Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.

Compartir este post

También te puede interesar

Cómo usar Thread Pool en C++
Blog

Cómo usar Thread Pool en C++

Aprende a crear tus propios thread pool en C++, primero de forma teórica y después con un caso práctico.

Daniel Sánchez Quirós
Icono de la tecnología
Curso

Patrones e interfaces en c++

Avanzado
1 h. y 41 min.

Aprende a diseñar y asimilar patrones e interfaces para tus programas en C++ con la librería STL. .

Antonio José Checa Bustos
4.1