下面是我的代码。操作功能无法正常工作。任何帮助将不胜感激。通常,sort
按升序排序。我想定义operat,使其按降序排序
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<utility>
using namespace std;
typedef pair<int,int> pii;
typedef pair<int,pii> pwp;
bool operat(pwp a, pwp b){
if(a.first > b.first){
return true;
}else if(a.second.first > b.second.first) {
return true;
}else if (a.second.second > b.second.second) { return true;}
return false;
}
int main(){
vector<pwp> inp;
pwp obj1 = make_pair(1998,make_pair(3,24));
pwp obj2 = make_pair(1998,make_pair(3,21));
pwp obj3 = make_pair(1997,make_pair(3,24));
inp.push_back(obj1);
inp.push_back(obj2);
inp.push_back(obj3);
printf("Before sorting\n");
for(int i = 0 ; i< inp.size();i++){
pwp sth = inp[i];
printf("%d %d %d\n",sth.first,sth.second.first,sth.second.second);
}
sort(inp.begin(), inp.end(),operat);
cout<<"After soring"<<endl;
for(int i = 0 ; i< inp.size();i++){
pwp sth = inp[i];
printf("%d %d %d\n",sth.first,sth.second.first,sth.second.second);
}
return 0;
}
新的一个:
bool operat(pwp a, pwp b){
if(a.first > b.first){
return true;
}else if(a.first < b.first) return false;
else if(a.second.first > b.second.first) {
return true;
}else if (a.second.first < b.second.first) return false;
else if (a.second.second > b.second.second) { return true;}
return false;
}