首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按第一个元素按升序排序对向量,如果相等,按降序排序第二个元素。

按第一个元素按升序排序对向量,如果相等,按降序排序第二个元素。
EN

Stack Overflow用户
提问于 2022-02-12 12:52:10
回答 1查看 898关注 0票数 -1

我有一个向量的对,我想分类。我想按第一个元素按升序排序,如果第一个元素相等,我想按第二个元素的降序排序。

示例:

代码语言:javascript
复制
3 2
1 9 
0 4
3 3

排序时,它必须是:

代码语言:javascript
复制
0 4
1 9
3 3
3 2

我是否可以在c++中实现这一点?

EN

回答 1

Stack Overflow用户

发布于 2022-02-12 13:02:18

就像评论中的人说的那样,std::sort应该可以很好地处理一些lambda。我猜是这样的:

代码语言:javascript
复制
std::vector<std::pair<int, int>> vec{
    {3, 2},
    {1, 9},
    {0, 4},
    {3, 3}
};

std::sort(vec.begin(), vec.end(), [](const auto& l, const auto& r){
    return (l.first == r.first) ? l.second > r.second : l.first < r.first;   
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71092006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档