std::list<T,Allocator>:: sort
|
void
sort
(
)
;
|
(1) | (constexpr seit C++26) |
|
template
<
class
Compare
>
void sort ( Compare comp ) ; |
(2) | (constexpr seit C++26) |
Sortiert die Elemente und bewahrt die Reihenfolge äquivalenter Elemente. Wenn eine Exception ausgelöst wird, ist die Reihenfolge der Elemente in * this nicht spezifiziert.
Keine Referenzen oder Iteratoren werden ungültig.
Inhaltsverzeichnis |
Parameter
| comp | - |
Vergleichsfunktionsobjekt (d.h. ein Objekt, das die Anforderungen von
Compare
erfüllt), das
true
zurückgibt, wenn das erste Argument
kleiner
als (d.h. vor dem zweiten angeordnet ist) das zweite Argument ist.
Die Signatur der Vergleichsfunktion sollte äquivalent zu folgender sein: bool cmp ( const Type1 & a, const Type2 & b ) ;
Obwohl die Signatur nicht
const
&
benötigt, darf die Funktion die übergebenen Objekte nicht modifizieren und muss alle Werte der Typen (möglicherweise const)
|
| Typanforderungen | ||
-
Compare
muss die Anforderungen von
Compare
erfüllen.
|
||
Komplexität
Gegeben N als size() :
Hinweise
std::sort
erfordert wahlfreie Zugriffsiteratoren und kann daher nicht mit
list
verwendet werden. Diese Funktion unterscheidet sich außerdem von
std::sort
dadurch, dass sie keinen austauschbaren Elementtyp für die
list
erfordert, die Werte aller Iteratoren beibehält und eine stabile Sortierung durchführt.
Beispiel
#include <functional> #include <iostream> #include <list> std::ostream& operator<<(std::ostream& ostr, const std::list<int>& list) { for (const int i : list) ostr << ' ' << i; return ostr; } int main() { std::list<int> list{8, 7, 5, 9, 0, 1, 3, 2, 6, 4}; std::cout << "initially: " << list << '\n'; list.sort(); std::cout << "ascending: " << list << '\n'; list.sort(std::greater<int>()); std::cout << "descending:" << list << '\n'; }
Ausgabe:
initially: 8 7 5 9 0 1 3 2 6 4 ascending: 0 1 2 3 4 5 6 7 8 9 descending: 9 8 7 6 5 4 3 2 1 0
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 1207 | C++98 | es war unklar, ob Iteratoren und/oder Referenzen ungültig werden | gültig halten |
Siehe auch
|
kehrt die Reihenfolge der Elemente um
(öffentliche Elementfunktion) |