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.
Contenido |
[editar] 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: bool cmp(const Tipo1 &a, const Tipo2 &b); Si bien la signatura no necesita tener const &, la función no debe modificar los objetos que se le pasan y debe poder aceptar todos los valores de tipo (posiblemente const) |
[editar] Valor de retorno
(Ninguno)
[editar] Complejidad
Aproximadamente N log N comparaciones, donde N es el número de elementos en la lista.
[editar] 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.
[editar] 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