sort
Réorganise les éléments dans une plage spécifiée dans une commande nondescending ou selon un critère de classement spécifié par un attribut binaire.
template<class RandomAccessIterator>
void sort(
RandomAccessIterator first,
RandomAccessIterator last
);
template<class RandomAccessIterator, class Predicate>
void sort(
RandomAccessIterator first,
RandomAccessIterator last,
Predicate comp
);
Paramètres
first
Un itérateur d'accès aléatoire adressant la position du premier élément dans la plage à trier.last
Un itérateur d'accès aléatoire adressant une position au delà de le dernier élément dans la plage à trier.comp
Objet défini par l'utilisateur de fonction de prédicat qui définit le critère de comparaison à répondre par des éléments consécutifs dans l'ordre.Cet attribut binaire accepte deux arguments et retourne true si les deux arguments sont dans la commande et l' false sinon.Cette fonction de comparateur doit appliquer le classement faible strict aux paires d'éléments de la séquence.Pour plus d'informations, consultez Algorithmes.
Notes
l'intervalle référencé doit être valide ; tous les pointeurs doivent être deréférençables et dans la séquence la dernière position est accessible dès le début par l'augmentation.
Les éléments sont identiques, mais pas nécessairement égales, si aucune n'est inférieure à l'autre.L'algorithme d' sort n'est pas stable et ne garantit pas que le classement relatif des éléments équivalents est conservé.L'algorithme stable_sort conserve ce classement d'origine.
La moyenne d'une complexité de tri est O(logN) N, où N = dernier – en premier.
Exemple
// 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;
}
Configuration requise
en-tête : <algorithm>
l'espace de noms : DST