根据比较函数对数组进行排序 C++

NoobCoder101

我想排序对数组(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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章