如何对包含pair <int,int>元素的向量进行排序?按照比较函数</int,int>完成排序

时间:2013-11-05 17:43:22

标签: c++ sorting vector stl

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;
   }
 }

//这样会抛出编译错误。您能否指导如何根据比较函数中给出的条件对此向量进行排序。

1 个答案:

答案 0 :(得分:7)

据推测,您希望按字典顺序对它们进行排序。你可以这样做:

std::sort(vii.begin(), vii.end(), std::greater<std::pair<int,int>>());

比较仿函数是二元谓词,必须返回一个布尔值,并实现strict weak orderingstd::greater<std::pair<int,int>>为你做到了。