Namespaces
Variants

std::hive<T,Allocator>::sort

De es.cppreference.net
 
 
 
 
template< class Compare = std::less<T> >
void sort( Compare comp = Compare() );
(desde C++26)

Ordena los elementos. Puede asignar memoria. Los elementos se comparan usando comp. No se preserva el orden de los elementos equivalentes.

Las referencias, punteros e iteradores que se refieren a elementos en *this, así como el iterador pasado-el-final, pueden ser invalidados.

T debe ser MoveInsertable en hive, MoveAssignable y Swappable. De lo contrario, el comportamiento no está definido.

Parámetros

comp - objeto de función de comparación (es decir, un objeto que satisface los requisitos de Compare) que devuelve ​true si el primer argumento es menor que (es decir, está ordenado antes) que el segundo.

La firma de la función de comparación debe ser equivalente a la siguiente:

bool cmp(const Type1& a, const Type2& b);

Si bien la firma 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) Type1 y Type2 independientemente de categoría de valor (por lo tanto, Type1& no está permitido, ni lo está Type1 a menos que para Type1 un movimiento sea equivalente a una copia(desde C++11)).
Los tipos Type1 y Type2 deben ser tales que un objeto de tipo <T,Allocator>::const_iterator pueda ser desreferenciado e implícitamente convertido a ambos.

Requisitos de tipo
-
Compare debe cumplir los requisitos de Compare.

Complejidad

N·log(N) aplicaciones de comp, donde N es size().

Excepción

Si se lanza una excepción, el orden de los elementos en *this es no especificado.

Notas

std::sort y ranges::sort requieren iteradores de acceso aleatorio, por lo que no se pueden usar con hive.

Ejemplo

#include <hive>
#include <functional>
#include <print>

int main()
{
    std::hive<int> hive{3, 1, 4, 1, 5, 9, 2, 6, 5};
    std::println("Initially:  {}", hive);

    hive.sort();
    std::println("Ascending:  {}", hive);

    hive.sort(std::greater<int>());
    std::println("Descending: {}", hive);
}

Salida:

Initially:  [3, 1, 4, 1, 5, 9, 2, 6, 5]
Ascending:  [1, 1, 2, 3, 4, 5, 5, 6, 9]
Descending: [9, 6, 5, 5, 4, 3, 2, 1, 1]

Véase también

elimina elementos duplicados consecutivos
(función miembro pública)