如何根据第一个或第二个中较大的值对数组进行排序

时间:2017-12-07 18:53:59

标签: c++ arrays sorting vector custom-function

 public string SwapPhoneAccount()
    {

        // Find your Account Sid and Auth Token at twilio.com/console
        const string accountSid = "Assssssssssssssssssssssss";
        const string authToken = "******************";

        // In the case you want to transfer numbers between subaccounts, you need to
        // know three things - the account SID of the phone number's current owner,
        // the account SID of the account you'd like to transfer the number to, and
        // the SID of the phone number you'd like to transfer
        const string currentOwnerSid = "Assssssssssssssssssssssss";
        const string newOwnerSid = "Awwwwwwwwwwwwwwwwwwwwwwwww";
        const string phoneNumberSid = "Arrrrrrrrrrrrrrrrrrrrrr";

        // Create an authenticated REST client
        TwilioClient.Init(accountSid, authToken);

        IncomingPhoneNumberResource.Update(phoneNumberSid,pathAccountSid:currentOwnerSid,
                                           accountSid: newOwnerSid);
        return "good";
    }

我的目标是根据更大的值对数组进行排序。
我不在乎更大的价值是货币对中的第一个或第二个元素。

例如我有这对:

4,10-
7,6
3,8
9,1

对它们进行排序后:

4,10-
9,1
3,8
7,6

  

所以我不是根据基于两者的第一次或第二次排序进行排序。

如何编辑此比较功能来执行此任务?

提前致谢。

3 个答案:

答案 0 :(得分:1)

听起来你想要比较两对中的最大值。

bool custom_compare(const pair<int, int>& p1, const pair<int, int>& p2){
    return std::max(p1.first, p1.second) < std::max(p2.first, p2.second); 
    }

答案 1 :(得分:1)

你在这里

bool custome_compare(const std::pair<int, int> &p1, const std::pair<int, int> &p2)
{
    return std::max( p1.first, p1.second ) > std::max( p2.first, p2.second );
}

这是一个示范程序

#include <iostream>
#include <utility>
#include <algorithm>
#include <iterator>

bool custome_compare(const std::pair<int, int> &p1, const std::pair<int, int> &p2)
{
    return std::max( p1.first, p1.second ) > std::max( p2.first, p2.second );
}

int main() 
{
    std::pair<int, int> arr[] = 
    {
        { 4, 10 }, { 7, 6 }, { 3, 8 }, { 9, 1 }
    };


    for ( const auto &p : arr )
    {
        std::cout << p.first << ", " << p.second << '\n';
    }

    std::cout << std::endl;

    std::sort( std::begin( arr ), std::end( arr ), custome_compare );

    for ( const auto &p : arr )
    {
        std::cout << p.first << ", " << p.second << '\n';
    }

    std::cout << std::endl;

    return 0;
}

它的输出是

4, 10
7, 6
3, 8
9, 1

4, 10
9, 1
3, 8
7, 6

答案 2 :(得分:1)

自定义比较功能应该比较对的最大值。如下所示:

bool custom_compare(pair<int, int> i, pair<int, int> j) { return max(i.first, 
i.second) > max(j.first, j.second); }

没有经过测试,也没有尝试编译,但我希望你能从这里解决问题。