首页 > 代码库 > 模板模式--哈希表排序
模板模式--哈希表排序
#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;
}
#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;
}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。