sort
Dispone gli elementi in un intervallo specificato in un ordine nondescending o come un criterio di ordinamento specificato da un predicato binario.
template<class RandomAccessIterator>
void sort(
RandomAccessIterator first,
RandomAccessIterator last
);
template<class RandomAccessIterator, class Predicate>
void sort(
RandomAccessIterator first,
RandomAccessIterator last,
Predicate comp
);
Parametri
first
Un iteratore di accesso casuale destinato alla posizione del primo elemento nell'intervallo da ordinare.last
Un iteratore di accesso casuale destinato alla posizione una dopo l'elemento finale nell'intervallo da ordinare.comp
Oggetto definito dall'utente di funzione di predicato che definisce i criteri di confronto da soddisfare gli elementi successivi in ordine.Il predicato binario accetta due argomenti e restituisce true se due argomenti sono nell'ordine e in false.Questa funzione di confronto deve imporre un ordine rigido debole a coppie di elementi dalla sequenza.Per ulteriori informazioni, vedere Algoritmi.
Note
l'intervallo fatto riferimento deve essere valido; tutti i puntatori devono essere dereferenceable e all'interno della sequenza dell'ultima posizione è raggiungibile da prima dall'aumento.
Gli elementi sono equivalenti, ma non necessariamente a, se non è inferiore all'altro.L'algoritmo sort non diventa stabile e non garantisce che l'ordine degli elementi equivalenti verrà mantenuto.L'algoritmo stable_sort conserva questo ordine originale.
La media della complessità di ordinamento è O(logN), dove N = *ultimo – *prima.
Esempio
// 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;
}
Requisiti
intestazione: <algorithm>
Spazio dei nomi: deviazione standard