Namensräume
Varianten
Aktionen

std::experimental::ranges::sort

Von cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
 
template< RandomAccessIterator I, Sentinel<I> S,

          class Comp = ranges::less<>, class Proj = ranges::identity >
    requires Sortable<I, Comp, Proj>

I sort( I first, S last, Comp comp = Comp{}, Proj proj = Proj{} );
(1) (Ranges TS)
template< RandomAccessRange R,

          class Comp = ranges::less<>, class Proj = ranges::identity >
    requires Sortable<ranges::iterator_t<R>, Comp, Proj>

ranges::safe_iterator_t<R> sort( R&& r, Comp comp = Comp{}, Proj proj = Proj{} );
(2) (Ranges TS)
1) Sortiert die Elemente im Bereich [firstlast) aufsteigend. Die Reihenfolge gleicher Elemente ist nicht garantiert erhalten zu bleiben. Elemente werden mit comp verglichen, nachdem die Projektion proj angewendet wurde.
2) Sortiert die Elemente im Bereich r, als ob mit return ranges::sort(ranges::begin(r), ranges::end(r), comp, proj);.

Ungeachtet der oben gezeigten Deklarationen ist die tatsächliche Anzahl und Reihenfolge der Template-Parameter für Algorithmusdeklarationen nicht spezifiziert. Wenn also explizite Template-Argumente beim Aufruf eines Algorithmus verwendet werden, ist das Programm wahrscheinlich nicht portabel.

Inhalt

[bearbeiten] Parameter

first, last - der Bereich der zu sortierenden Elemente
r - der Bereich der zu sortierenden Elemente
comp - der zu verwendende Komparator
proj - die auf Elemente im Bereich anzuwendende Projektion

[bearbeiten] Rückgabewert

Ein Iterator, der auf das Ende des Bereichs zeigt (d.h., er vergleicht gleich mit last für Überladung (1) und ranges::end(r) für Überladung (2)).

[bearbeiten] Komplexität

O(N·log(N)) Vergleiche, wobei N gleich der Anzahl der Elemente im Bereich ist.

[bearbeiten] Beispiel

[bearbeiten] Siehe auch

Sortiert einen Bereich aufsteigend
(Funktionstemplate) [edit]