//默认都为 less<T>01 sort 从小到大 // less<T>()
02 priority_queue 从大到小 // less<T>
03 set 从小到大 // less<T>
04 map 从小到大 // less<T>仿函数类重载了operator() 创建一个行为类似函数的对象 可实现类似函数调用的过程
// sort
#include<bits/stdc++.h>
using namespace std;// c++高版本标准实现列表初始化
vector<int> v1{ 1,20,3,40,5,60,7,80,9,10 };
vector<int> v2{ 11,2,33,4,55,6,77,8,99,1 };
vector<int> v3{ 1,22,3,44,5,66,7,88,9,10 };
vector<int> v4{ 1,23,3,45,5,67,7,89,9,10 };
vector<int> v5{ 1,13,3,15,5,17,7,19,9,11 };// 01 自定义比较函数
bool cmpF( const int& a,const int& b ) { return a < b ; }
// 02 自定义比较类 仿函数
struct cmpS
{bool operator () ( const int& a,const int& b ) const{return a < b ;}
};void out( const vector<int>& v )
{for( int i=0;i<v.size();i++ ){if(i) cout<<" ";cout<<v[i];}cout<<endl;
}int main()
{sort( v1.begin(),v1.end(),cmpF ); out( v1 ); // 函数不带()sort( v2.begin(),v2.end() ); out( v2 ); // 默认为 less<T>()sort( v3.begin(),v3.end(),less<int>() ); out( v3 );sort( v4.begin(),v4.end(),greater<int>() ); out( v4 );sort( v5.begin(),v5.end(),cmpS() ); out( v5 ); // 仿函数都带()return 0;
}
// 1 3 5 7 9 10 20 40 60 80
// 1 2 4 6 8 11 33 55 77 99
// 1 3 5 7 9 10 22 44 66 88
// 89 67 45 23 10 9 7 5 3 1
// 1 3 5 7 9 11 13 15 17 19
// priority_queue
#include<bits/stdc++.h>
using namespace std;struct AA
{int x,y;AA ( int a=0,int b=0 ):x(a),y(b) {}friend operator < ( const AA& a,const AA& b ) {return ( b.x < a.x ) ;}
}in;struct cmp // not ()
{bool operator () ( const int& a,const int& b ) const{return ( b < a ) ;}
};int main()
{priority_queue<AA> q1; // not ()priority_queue< int,vector<int>,greater<int> > q2;priority_queue< int,vector<int>,cmp > q3;return 0;
}
// set
#include<bits/stdc++.h>
using namespace std;struct cmp
{bool operator () ( const int& a,const int& b ) const{return ( a > b ) ; // 从大到小}
};int main()
{set<int,cmp> st;set<int,cmp>::iterator it;int n,i;while( cin>>n ){st.clear();for( i=0;i<n;i++ ) st.insert( i );for( it=st.begin();it!=st.end();it++ ){cout<<(*it)<<" ";} cout<<endl;}return 0;
}
// 4
// 3 2 1 0
// 3
// 2 1 0
// 2
// 1 0
// 1
// 0
// map
#include<bits/stdc++.h>
using namespace std;struct cmp
{bool operator () ( const int& a,const int& b ) const{return ( a > b ) ; // 从大到小 }
};int main()
{map< int,int,cmp > mp;map< int,int,cmp >::iterator it;int n,i;while( cin>>n ){mp.clear();for( i=0;i<n;i++ ){mp.insert( make_pair( i,i-n ) );}for( it=mp.begin();it!=mp.end();it++ ){cout<<it->first<<" "<<it->second<<endl;}}return 0;
}
// 5
// 4 -1
// 3 -2
// 2 -3
// 1 -4
// 0 -5