我想排序对数组(i,j)
的方式,if (i.first > j.first)
则i
是第一位的,if (i.first == j.first)
则i.second
必须小于j.second
以先来,这里是我写的功能,但它似乎并不奏效
#include <stdio.h>
#include <utility>
#include <algorithm>
using namespace std;
bool cmp(pair<int,int> i, pair<int,int> j) {
if(i.first > j.first)
return i<j;
else if (i.first == j.first) {
if(i.second > j.second)
return i < j;
else
return j<i;
}
else
return j<i;
}
int main(int argc, char **argv)
{
pair<int,int> arr[4];
arr[0]=make_pair<int,int>(3,7);
arr[1]=make_pair<int,int>(2,5);
arr[2]=make_pair<int,int>(3,4);
arr[3]=make_pair<int,int>(1,8);
sort(arr,arr+3,cmp);
for (int i=0;i<4;i++)
{
printf("element (%d,%d)\n",get<0>(arr[i]),get<1>(arr[i]));
}
}
排序功能似乎不起作用:
$ g++ -o main main.cpp
$ ./main
element (3,7)
element (2,5)
element (3,4)
element (1,8)
有任何想法吗?谢谢阅读
这应该有效:
bool cmp(pair<int,int> i, pair<int,int> j)
{
if( i.first == j.first )
return i.second < j.second;
return i.first > j.first;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句