typedef pair<int,int>ii;
vector<ii>vii;
sort(vii.begin(),vii.end(),comp);
ii comp(ii a,ii b){
if(a.first>b.first)
return a;
else if(a.first==b.first){
if(a.second>b.second)
return a;
else
return b;
}
else{
return b;
}
}
//这样会抛出编译错误。您能否指导如何根据比较函数中给出的条件对此向量进行排序。
答案 0 :(得分:7)
据推测,您希望按字典顺序对它们进行排序。你可以这样做:
std::sort(vii.begin(), vii.end(), std::greater<std::pair<int,int>>());
比较仿函数是二元谓词,必须返回一个布尔值,并实现strict weak ordering。 std::greater<std::pair<int,int>>
为你做到了。