vector
static bool cmp(const int &a, const int &b ) { return a > b; } vector<int> nums; sort(nums.begin(),nums.end(),cmp);
map
无法直接排序,转换成pair的vector
static bool cmp(const pair<int,int>&a, const pair<int,int>&b ) { return a.second > b.second; //return a.first > b.first; } unordered_map<int,int> my_map; vector<pair<int,int>> tmp(my_map.begin(),my_map.end()); sort(tmp.begin(),tmp.end(),cmp); };
set
set容器默认排序规则为从小到大
利用仿函数,可以改变排序规则
#include <iostream> using namespace std; #include <set> class mycompare { public: bool operator()(int v1,int v2){ return v1>v2; } }; void test01() { set<int> s1; s1.insert(1); s1.insert(4); s1.insert(2); s1.insert(5); s1.insert(3); for(set<int>::iterator it=s1.begin();it!=s1.end();it++){ cout<<*it<<" "; } cout<<endl; //1 2 3 4 5 默认从小到大排序 //利用仿函数 set<int,mycompare> s2; s2.insert(1); s2.insert(4); s2.insert(2); s2.insert(5); s2.insert(3); for(set<int>::iterator it=s2.begin();it!=s2.end();it++){ cout<<*it<<" "; } cout<<endl; //5 4 3 2 1 } int main() { test01(); return 0; }