Freigeben über


sort

Ordnet die Elemente in einem angegebenen Bereich in eine nondescending Reihenfolge oder gemäß einem Sortierkriterium an, das durch ein binäres Prädikat angegeben wird.

template<class RandomAccessIterator>
   void sort(
      RandomAccessIterator first, 
      RandomAccessIterator last
   );
template<class RandomAccessIterator, class Predicate>
   void sort(
      RandomAccessIterator first, 
      RandomAccessIterator last, 
      Predicate comp
   );

Parameter

  • first
    Ein Iterator mit wahlfreier Zugriff, der die Position des ersten Elements im Bereich behandelt sortiert werden.

  • last
    Ein Iterator mit wahlfreier Zugriff, der die Position eine hinter dem letzten Element im Bereich behandelt sortiert werden.

  • comp
    Benutzerdefiniertes Prädikatfunktionsobjekt, das das durch aufeinander folgende definiert Elemente in der Reihenfolge erfüllt werden Vergleichskriterium.Dieses Prädikat binäre akzeptiert zwei Argumente und gibt true zurück, wenn die beiden Argumente in der Reihenfolge und in false andernfalls sind.Diese Vergleichsoperatorfunktion muss eine strikte schwache Sortierung Paare von Elementen aus der Sequenz verlangen.Weitere Informationen finden Sie unter Algorithms.

Hinweise

Der Bereich, der verweist, muss gültig sein; alle Zeiger müssen dereferenzierbar sein und in der Sequenz ist die letzte Position von der ersten durch Zunahme erreichbar.

Elemente sind äquivalent, aber nicht notwendigerweise entsprechen, wenn kein kleiner als das andere ist.Der sort Algorithmus ist nicht stabil und daher garantiert nicht, dass die relative Reihenfolge der entsprechenden Elemente beibehalten wird.Der Algorithmus stable_sort behält diese ursprüngliche Reihenfolge bei.

Der Durchschnitt einer Sortierungskomplexität N-Protokoll ist O( n), wobei n = letzte - zuerst.

Beispiel

// alg_sort.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <functional>      // For greater<int>( )
#include <iostream>

// Return whether first element is greater than the second
bool UDgreater ( int elem1, int elem2 )
{
   return elem1 > elem2;
}

int main( )
{
   using namespace std;
   vector <int> v1;
   vector <int>::iterator Iter1;

   int i;
   for ( i = 0 ; i <= 5 ; i++ )
   {
      v1.push_back( 2 * i );
   }

   int ii;
   for ( ii = 0 ; ii <= 5 ; ii++ )
   {
      v1.push_back( 2 * ii + 1 );
   }

   cout << "Original vector v1 = ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")" << endl;

   sort( v1.begin( ), v1.end( ) );
   cout << "Sorted vector v1 = ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")" << endl;

   // To sort in descending order. specify binary predicate
   sort( v1.begin( ), v1.end( ), greater<int>( ) );
   cout << "Resorted (greater) vector v1 = ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")" << endl;

   // A user-defined (UD) binary predicate can also be used
   sort( v1.begin( ), v1.end( ), UDgreater );
   cout << "Resorted (UDgreater) vector v1 = ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")" << endl;
}
  

Anforderungen

Header: <algorithm>

Namespace: std

Siehe auch

Referenz

Standardvorlagenbibliothek