Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Uso de la función Sort en C++

Antonio José Checa Bustos
Uso de la función Sort en C++

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.

Relacionado

Te dejamos una selección de cursos, carreras y artículos

Cómo usar la librería Chrono en C++

Cómo usar la librería Chrono en C++

Lenguajes de programación

29 de Octubre de 2018

Concoe a fondo los principales usos de Chrono de C++  y cómo funciona con unos ejemplos prácticos,.

Cómo usar Thread Pool en C++

Cómo usar Thread Pool en C++

Lenguajes de programación

03 de Octubre de 2018

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

Más de 300 empresas confían en nosotros

Oesia
Vass
Everis
Ayesa
Altran
Ibermatica
Atmira
GFI
Accenture
GMV
Concatel
Telefonica
Caser
Banco de España
kpmg
Mapfre
Randstad