std::list::sort
void sort(); |
(1) | |
template< class Compare > void sort( Compare comp ); |
(2) | |
Ordena los elementos en orden ascendente. El orden de elementos iguales se conserva. La primera versión utiliza el operador operator< para comparar los elementos, la segunda versión utiliza la función de comparación dada comp.
Si se lanza una excepción, el orden de los elementos en *this no está especificado.
Parámetros
| comp | - | Objeto función de comparación (es decir, un objeto que satisface los requisitos de Compare) que devuelve true si el primer argumento es menor (es decir, se ordena antes) que el segundo. La signatura de la función de comparación debe ser equivalente a la siguiente:
Si bien la signatura no necesita tener |
Valor de retorno
(Ninguno)
Complejidad
Aproximadamente N log N comparaciones, donde N es el número de elementos en la lista.
Notas
std::sort requiere iteradores de acceso aleatorio, por lo que no puede usarse con list. Esta función también difiere de std::sort en que no requiere que el tipo de elemento del contenedor list sea intercambiable, conserva los valores de todos los iteradores y realiza un ordenamiento estable.
Ejemplo
#include <iostream>
#include <functional>
#include <list>
std::ostream& operator<<(std::ostream& ostr, const std::list<int>& lista)
{
for (auto &i : lista) {
ostr << " " << i;
}
return ostr;
}
int main()
{
std::list<int> lista = {8, 7, 5, 9, 0, 1, 3, 2, 6, 4};
std::cout << "antes: " << lista << "\n";
lista.sort();
std::cout << "ascendente: " << lista << "\n";
lista.sort(std::greater<int>());
std::cout << "descendente: " << lista << "\n";
}
Salida:
antes: 8 7 5 9 0 1 3 2 6 4
ascendente: 0 1 2 3 4 5 6 7 8 9
descendente: 9 8 7 6 5 4 3 2 1 0