Namespaces
Variants

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

Depuis fr.cppreference.net
 
 
 
 
template< class Compare = std::less<T> >
void sort( Compare comp = Compare() );
(depuis C++26)

Trie les éléments. Peut allouer. Les éléments sont comparés en utilisant comp. L'ordre des éléments équivalents n'est pas préservé.

Les références, pointeurs et itérateurs faisant référence aux éléments dans *this, ainsi que l'itérateur de fin, peuvent être invalidés.

T doit être MoveInsertable dans hive, MoveAssignable et Swappable. Sinon, le comportement est indéfini.

Paramètres

comp - objet fonction de comparaison (c'est-à-dire un objet qui satisfait aux exigences de Compare) qui retourne ​true si le premier argument est less que (c'est-à-dire est ordonné before) le second.

La signature de la fonction de comparaison doit être équivalente à la suivante :

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

Bien que la signature n'ait pas besoin d'avoir const&, la fonction ne doit pas modifier les objets qui lui sont passés et doit pouvoir accepter toutes les valeurs de type (éventuellement const) Type1 et Type2 indépendamment de la catégorie de valeur (donc Type1& n'est pas autorisé, non plus Type1 sauf si pour Type1 un déplacement équivaut à une copie(depuis C++11)).
Les types Type1 et Type2 doivent être tels qu'un objet de type <T,Allocator>::const_iterator puisse être déréférencé puis implicitement converti en chacun d'eux. ​

Exigences de type
-
Compare doit satisfaire aux exigences de Compare.

Complexité

N·log(N) applications de la comp, où N est size().

Exception

Si une exception est levée, l'ordre des éléments dans *this est non spécifié.

Notes

std::sort et ranges::sort nécessitent des itérateurs à accès aléatoire et ne peuvent donc pas être utilisés avec hive.

Exemple

#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);
}

Sortie :

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]

Voir aussi

supprime les éléments consécutifs en double
(fonction membre publique)