c++ 结构体多级排序

news/2024/12/22 19:34:35/

升序

struct jt_pair{ int nMD;

int nZZ;};

期望的排序顺序为:  1-1 1-2 1-3  1-4 2-1 2-3 3-5 10-1 10--2 10-3

如下面代码:

bool cmp_asc( jt_pair s1,  jt_pair s2)
{if (s1.nMD < s2.nMD){return true;}else{if (s1.nMD == s2.nMD){if (s1.nZZ < s2.nZZ){return true;//s1.nZZ < s2.nZZ}else{return false;}}elsereturn false;}
}

参考:

sort函数对结构体多级排序_sort多层排序-CSDN博客

参考:

Sort函数使用模板:Sort(start,end,排序方法);Sort函数可以排各种数据类型,包括结构体,使用时只需将对应的数据类型放入即可:例如:对一个人的结构体排序,先按年龄从大到小排序,如果年龄相同,就按身高从大到小排序,如果身高也相同,就按体重从大到小排序;
//sort函数对于结构体的多级排序
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct Person
{string name;int ege;int hegh;int wight;
};
bool cmp(Person p1,Person p2)
{if(p1.ege >p2.ege )//一级排序 return true;else{if(p1.ege ==p2.ege ){if(p1.hegh >p2.hegh )//二级排序 {return true;}else{if(p1.hegh ==p2.hegh ){if(p1.wight >p2.wight )//三级排序(以此类推,可使用多个if-else嵌套做出多级排序) {return true;}elsereturn false;}elsereturn false;}}elsereturn false;}} 
int main()
{Person p[5];for(int i=0;i<5;i++){cin>>p[i].name>>p[i].ege >>p[i].hegh>>p[i].wight ;}cout<<"排序前:"<<endl;for(int i=0;i<5;i++){cout<<p[i].name<<" "<<p[i].ege<<" "<<p[i].hegh<<" "<<p[i].wight<<endl;}sort(p,p+5,cmp);cout<<"排序后:"<<endl;for(int i=0;i<5;i++){cout<<p[i].name<<" "<<p[i].ege<<" "<<p[i].hegh<<" "<<p[i].wight<<endl;}return 0;
}


http://www.ppmy.cn/news/1252662.html

相关文章

第一届云南大学CTF校赛YNUCTF-PWN提示(hint)

文章目录 easy-ikun四种方法 black_ikunsyscall-ikunikun-runner_记第一次校赛出题如何运行服务器?保存镜像 easy-ikun s[i:j] 表示获取a[i]到a[j-1] s[:-1]去掉最后一个字符 s[:-n]去掉最后n个字符 s[-2:]取最后两个字符 s[i:j:k]这种格式呢&#xff0c;i,j与上面的一样&…

LiveGBS流媒体平台GB/T28181功能-概览中负载信息直播、回放、播放、录像、H265、级联查看负载会话列表

LiveGBS常见问题-概览中负载信息具体表示什么直播、回放、播放、录像、H265、级联等 1、负载信息2、负载信息说明3、会话列表查看3.1、会话列表 4、搭建GB28181视频直播平台 1、负载信息 实时展示直播、回放、播放、录像、H265、级联等使用数目 2、负载信息说明 直播&#x…

波奇学C++:functional包装器和智能指针(一)

functional包装器 相当于适配器&#xff0c;用于对可调用对象&#xff08;函数指针&#xff0c;仿函数&#xff0c;lambda&#xff09;进行封装&#xff0c;使得他们的类型统一。 double func(double d) {return d / 4; } struct func1 {double operator()(double d){return …

3D云参观红色革命纪念馆允许更多人在线交流、体验

生活在和平年代的新一代青少年&#xff0c;可能对革命先烈英勇事迹难以有很深的体会&#xff0c;无法切实感受到中国共产党无畏牺牲、誓死保家卫国的红色精神&#xff0c;因此借助VR虚拟现实制作技术&#xff0c;让参观者们走近革命先烈中&#xff0c;感受老一辈无产阶级革命家…

2023.11.30-12.1我的发烧全过程

记录一下这糟糕的体温变化&#xff1a; &#xff08;昨天下午是在教室学随机过程的时候发现教室很热&#xff1b;今天下午又是在宿舍学嵌入式开发的时候发现不对劲&#xff0c;所以&#xff09; 11.30的17&#xff1a;30------38.1度&#xff08;吃了一粒布洛芬&#xff09;11…

Redis 命令处理过程

我们知道 Redis 是一个基于内存的高性能键值数据库, 它支持多种数据结构, 提供了丰富的命令, 可以用来实现缓存、消息队列、分布式锁等功能。 而在享受 Redis 带来的种种好处时, 是否曾好奇过 Redis 是如何处理我们发往它的命令的呢&#xff1f; 本文将以伪代码的形式简单分析…

【错误记录】Python 错误集合

Python 错误集合 文章目录 Python 错误集合TypeError: list object cannot be interpreted as an integer python 常见错误集合&#xff1a;持续更新 TypeError: ‘list’ object cannot be interpreted as an integer map [ [1, 1, 1, 1, 1, 1, 1, 0, 1, 1],[1, 0,…

理解BatchNormalization层的作用

深度学习 文章目录 深度学习前言一、“Internal Covariate Shift”问题二、BatchNorm的本质思想三、训练阶段如何做BatchNorm四、BatchNorm的推理(Inference)过程五、BatchNorm的好处六、机器学习中mini-batch和batch有什么区别 前言 Batch Normalization作为最近一年来DL的重…