Namespaces
Variants

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

Von de.cppreference.net
 
 
 
 
template< class Compare = std::less<T> >
void sort( Compare comp = Compare() );
(seit C++26)

Sortiert die Elemente. Kann Speicher allozieren. Elemente werden mittels comp verglichen. Die Reihenfolge äquivalenter Elemente bleibt nicht erhalten.

Referenzen, Zeiger und Iteratoren, die auf Elemente in *this verweisen, sowie der End-Iterator, können ungültig gemacht werden.

T sollte MoveInsertable in Hive, MoveAssignable und Swappable sein. Andernfalls ist das Verhalten undefiniert.

Parameter

comp - Vergleichsfunktionsobjekt (d.h. ein Objekt, das die Anforderungen von Compare erfüllt) und ​true zurückgibt, wenn das erste Argument kleiner als (d.h. in der Ordnung vor dem zweiten steht) das zweite ist.

Die Signatur der Vergleichsfunktion sollte der folgenden entsprechen:

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

Während die Signatur kein const& haben muss, darf die Funktion die übergebenen Objekte nicht modifizieren und muss alle Werte des Typs (möglicherweise const) Type1 und Type2 unabhängig von der Werte-Kategorie akzeptieren können (daher ist Type1& nicht erlaubt, ebenso wenig Type1, außer wenn für Type1 eine Bewegung einer Kopie gleichwertig ist(seit C++11)).
Die Typen Type1 und Type2 müssen so beschaffen sein, dass ein Objekt vom Typ <T,Allocator>::const_iterator dereferenziert und dann implizit in beide konvertiert werden kann. ​

Typanforderungen
-
Compare muss die Anforderungen von Compare erfüllen.

Komplexität

N·log(N) Anwendungen des comp, wobei N gleich size() ist.

Ausnahme

Wenn eine Ausnahme ausgelöst wird, ist die Reihenfolge der Elemente in *this unspezifiziert.

Hinweise

std::sort und ranges::sort benötigen Random-Access-Iteratoren und können daher nicht mit Hive verwendet werden.

Beispiel

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

Ausgabe:

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]

Siehe auch

entfernt aufeinanderfolgende doppelte Elemente
(öffentliche Mitgliedsfunktion)