如何排序 std::p空气优先

How to sort std::pair first only?

本文关键字:空气 std 何排序 排序      更新时间:2023-10-16

我的任务是制作方法:

  • 从字符串中获取数字
  • 每个数字都等于其总和的子数字
  • 现在对这些总和进行排序
  • 显示排序的总和及其原始值

我做了这个函数:

void orderWeight(const std::string &strng)
{
    std::vector<pair<int, int>> result;
    int r{}, rr{}, rrr{};
    std::stringstream ss(strng);
    while(ss>>r){
            rrr = r;
        while(r!=0){
            rr += r%10;
            r /= 10;
        }
        result.push_back( make_pair(rr, rrr));
        rr = 0;
        r = 0;
    }
    std::sort( result.begin(), result.end());
    for( int i=0; i<result.size();i++){
        cout<<result[i].first<<" "<<result[i].second<<endl;
    }
}

这个参数函数 - 56 65 74 100 99 68 86 180 90返回:

1 100
9 90
9 180
11 56
11 65
11 74
14 68
14 86
18 99

但是我不想按第一个值排序,然后按第二个值排序,正如您在

9 90
9 180

如果两个数字相同,请不要按第二个值对它们进行排序,只是它们在字符串中的位置如何。

我怎样才能实现它?

您可以通过

sort提供一个谓词来告诉它如何排序来实现它。例如,一个简单的 lambda:

std::sort( result.begin(), result.end(),
    [](const auto& lhs, const auto& rhs) {
        return lhs.first < rhs.first;
    });

以上将按第一个值排序。

另请参阅:https://en.cppreference.com/w/cpp/algorithm/sort