究极风暴4好缓慢:std::sort的用法

来源:百度文库 编辑:偶看新闻 时间:2024/05/05 20:13:21
view plain
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
//
//alg_std::sort.cpp
//
#include 
#include 
#include       // For greater( )
#include 
using namespace std;
// Return whether first element is greater than the second
bool UDgreater ( int elem1, int elem2 )
{
return elem1 > elem2;
}
class Csort
{
public:
// Return whether first element is less than the second
bool operator () (int a,int b) const
{
return a};
};
int main( )
{
vector  v1;
vector ::iterator Iter1;
int arr[12];
int i;
for ( i = 0 ; i <= 5 ; i++ )
{
v1.push_back( 2 * i );
arr[i]=2*i;
}
for ( i = 6 ; i <= 11 ; i++ )
{
arr[i]=23-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;
cout << "Original array arr = ( " ;
for ( int n=0;n<12;n++ )
cout << arr[n] << " ";
cout << ")" << endl;
//std::sort 默认排序方式
sort( v1.begin( ), v1.end( ) );
cout << "Sorted vector v1 = ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")" << endl;
//使用自定义函数给数组排序,第三个参数为函数指针UDgreater
//第二个参数为数据最大地址的后一位指针&arr[12];
sort( &arr[0], &arr[12],UDgreater);
cout << "Resorted (UDgreater) array arr = ( " ;
for ( int n=0;n<12;n++ ) cout << arr[n] << " ";
cout << ")" << endl;
//使用自定义类的 重载operator() 函数给数组排序,第三个参数为【类名()】
sort( &arr[0], &arr[12],Csort());
cout << "Resorted (Csort()) arr = ( " ;
for ( int n=0;n<12;n++ ) cout << arr[n] << " ";
cout << ")" << endl;
//使用库中 greater( ) 给向量V1排序;
sort( v1.begin( ), v1.end( ), greater( ) );
//sort( v1.begin( ), v1.end( ), Csort() );
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 );
sort( v1.begin( ), v1.end( ),Csort());
cout << "Resorted (UDgreater) vector v1 = ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")" << endl;
getchar();
return 0;
}