sort
Belirtilen aralıktaki öğelerin nondescending bir sipariş veya ikili karşılaştırma tarafından belirtilen bir sıralama ölçütü göre düzenler.
template<class RandomAccessIterator>
void sort(
RandomAccessIterator first,
RandomAccessIterator last
);
template<class RandomAccessIterator, class Predicate>
void sort(
RandomAccessIterator first,
RandomAccessIterator last,
Predicate comp
);
Parametreler
first
Sıralanan aralıkta ilk öğenin konumunu adresleme bir rasgele erişim Yineleyici.last
Sıralanacak geçen aralıktaki son öğenin konumunu adresleme bir rasgele erişim Yineleyici.comp
Sıralama içinde birbirini izleyen öğeleri tarafından yerine getirilmesi için karşılaştırma ölçütü tanımlayan kullanıcı tanımlı işlevin doðrulama nesnesi. Bu ikili karşılaştırma belirtiminin iki baðýmsýz deðiþken alýr ve döner true sırada iki bağımsız değişkeni olması durumunda ve false Aksi durumda. Bu karşılaştırıcı işlevi bir katı zayıf çiftleri serisinden öğelerinin üzerinde sıralama tanıtamazlar gerekir. Daha fazla bilgi için bkz. Algoritmalara.
Notlar
Başvurulan aralığı geçerli olması gerekir; Tüm işaretçiler dereferenceable ve sıra içinde son konuma birinciden erişilebildiğinden tarafından incrementation.
Öğeleri eşdeğer olan, ancak şart değil eşit, ikisi de varsa diğer azdır. sort Algoritması kararlı değildir ve bu nedenle göreli eşdeğer öğelerinin sıralamasını korunacaktır olduğunu garanti etmez. Algoritma stable_sort orijinal sipariş koru.
Sıralama karmaşıklık ortalaması olan o(n günlük n), nerede n = – Soyadı.
Örnek
// 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;
}
Gereksinimler
Başlık: <algorithm>
Namespace: std