#include <iostream>
#include <string>
#include <map>
#include <vector>
#include<algorithm>
using namespace std;
typedef pair<string,int>PAIR;
bool cmp_by_value(const PAIR& p,const PAIR &a)
{
return p.second<a.second;
}
struct cmp
{
bool operator()(const string& k1, const string& k2) {
return k1.length() <= k2.length();
}
};
class Duck
{
public:
string name;
int weight;
Duck(const string &s,int w):name(s),weight(w){}
bool operator<(const Duck &d)const
{
return weight<d.weight;
}
};
void display(vector<PAIR>ducks)
{
for(vector<PAIR>::iterator iter=ducks.begin();iter!=ducks.end();iter++)
{
cout<<(*iter).first<<" "<<(*iter).second<<endl;
}
}
int main()
{
map<string,int,cmp>m;//相同时看perate中的比较有没有等号如果有则不会被替代
m["Daffy"]=8;
m["Dewey"]=2;
m["Howard"]=7;
m["Donald"]=10;
vector<PAIR>ducks(m.begin(),m.end());
cout<<"Before sorting"<<endl;
display(ducks);
cout<<"Afer sorting"<<endl;
sort(ducks.begin(),ducks.end(),cmp_by_value);
display(ducks);
cout<<"下面是按key排序"<<endl;
sort(ducks.begin(),ducks.end());
display(ducks);
return 0;
}
Light OJ 1102 Problem Makes Problem 组合数