C++结构体多级排序的三种方法

struct node{int chinese,math;char name[15];
};

需求:按数学成绩从大到小排序 

1.自定义比较器

//自定义比较函数
bool cmp(node a,node b){return a.math>b.math;
}

2.定义友元函数

struct node{int chinese,math;char name[15];//友元函数friend bool operator<(node a,node b){return a.math>b.math;}
};

3.重载小于运算符

struct node{int chinese,math;char name[15];//重载小于运算符bool operator <(const node&b)const{return math>b.math;}
};

完整实例程序

#include <iostream>
#include <cstdio>
#include<algorithm>
using namespace std;
#define INF 0x3f3f3f3f
const int maxn = (1e5+10);struct node{int chinese,math;char name[15];/*//重载小于运算符bool operator <(const node&b)const{return math>b.math;}*///友元函数friend bool operator<(node a,node b){return a.math>b.math;}
};
node arr[maxn];
//自定义比较函数
bool cmp(node a,node b){return a.math>b.math;
}
int gcd(int a,int b)
{return b==0?a:gcd(b,a%b);
}
int lcm(int a,int b)
{return a/gcd(a,b)*b;
}
int main() {int n;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d%d%s",&arr[i].chinese,&arr[i].math,arr[i].name);}sort(arr,arr+n);printf("%d\n%s\n",lcm(arr[0].chinese,arr[1].chinese),arr[0].name);
}
/*
3
50 60 张三
40 80 李四
45 100 王五
*/

C++结构体多级排序的三种方法相关推荐

  1. Python中给字典排序的三种方法(有一种你绝对没见过)

    我们经常在计算机等级考试中遇到词频排序的问题,我们一般先通过生成字典的方法,统计词的频次,然后给字典排序.那么如何快速地给字典按照键值进行排序呢?下面介绍三种方法.第一种方法相对比较常见,但是第二种方 ...

  2. C/C++中struct结构体定义变量的3种方法及初始化

    本博客整理自http://blog.csdn.net/zunfo/article/details/51494631 1.struct结构体定义 1.1.先定义结构体,然后再定义结构体变量 struct ...

  3. Excel电子表格排序的三种方法

    排序是数据处理中的经常性工作,Excel排序有序数计算(类似成绩统计中的名次)和数据重排两类.本文以几个车间的产值和名称为例,介绍Excel 2000/XP的数据排序方法. 一.数值排序 1.RANK ...

  4. 统计日志中ip访问次数并排序的三种方法

    1  利用linux中的awk命令 grep "GET aaa.log | awk -F " " '{print $NF}' >d:/test.log 假设日志的最 ...

  5. STL 中给 vector 去重的三种方法

    文章目录 背景 去重思路 解决方案 『一』vector, sort + unique 『二』vector + set(手动赋值) cmpSort() 定义在 Class 外 cmpSort() 定义为 ...

  6. 计算机启动应用程序的方法,excel的程序_Excel2010中启动应用程序的三种方法

    使用Excel时,需要先启动应用程序,怎么去进行操作启动它?今天,学习啦小编就教大家在Excel2010中启动应用程序的三种方法. Excel2010中启动应用程序的三种步骤如下: 1.开始菜单 在桌 ...

  7. C# hashTable的遍历【2种方法】与排序【3种方法】

    private void Form1_Load(object sender, EventArgs e) { Hashtable ht = new Hashtable(); ht.Add("j ...

  8. html清除图片上下间距,css - 三种方法解决LI和内部Img的上下间距问题

    在火狐浏览器和谷歌浏览器(qq浏览器,谷歌内核)bug类似这张图: img的高度是190*127 但是放到li中,li并没有设置高度,却和内部的图片之间上下错位. 若强行给li设置高度127,他和im ...

  9. C语言函数怎么像python那样返回多个值?(三种方法:1、设置全局变量 2、传递指针 3、使用结构体返回不同类型的数据)

    引用文章:c语言函数可不可以返回多个值 文章目录 方法一:设置全局变量 例如:利用一个函数求出正方形的周长和面积. 方法二:使用数组名或指针作为函数的形参 实例2:编写函数求一维整形数组的最大值与最小 ...

最新文章

  1. TypeError: ‘instancemethod‘ object has no attribute ‘__getitem__‘
  2. Linux下用汇编输出Hello, world
  3. 本程序主要实现了一个方阵的求逆与实现了逆矩阵和原矩阵的乘积为单位矩阵
  4. mysql存储过程报错_MySQL存储过程错误No data - zero rows fetched, selected, or processed
  5. [react] 怎么防止HTML被转义?
  6. 安装npm_Npm安装包的版本号是如何更新的?
  7. 硬盘GPT分区与MBR分区的区别
  8. html5 播放加密视频,说说Html5视频加密播放原理和优势
  9. 海康大华网络录像机摄像机设备几种NTP校时方法
  10. 通关!游戏设计之道的学习笔记(七)关卡设计
  11. C4D中英文对照—材质编辑器之反射通道
  12. Web容器、Servlet容器、Spring容器、SpringMVC容器之间的关系
  13. MongoDB Mobile Sync for iOS推出Beta版本
  14. BUUCTF--[GUET-CTF2019]number_game
  15. 如何提高网页的加载速度 ——优化网页图片加载
  16. 中国通信行业进入5G时代,巨大发展空间值得期待!
  17. python dictionary怎么用_python Dictionary字典使用
  18. MySQL数据操作语言——插入语句、修改语句和删除语句
  19. autoware 1.14 lgvsl simulator仿真
  20. 《Java面试通关手册》V6.0 来了,太腻害了!

热门文章

  1. 在美妙的数学王国中畅游
  2. C# 图片文件文本string格式 传输问题
  3. max与top的效率
  4. unreal world 皮革_UnRealWorld 进阶游戏教程
  5. java路线_2021年Java学习路线图—精心整理
  6. pythondir什么意思_Python之dir()与__dict__的区别
  7. python装饰器常见问题_关于python装饰器的问题
  8. 分布式内存数据库--Redis事务
  9. 六十五、Leetcode数组系列(上篇)
  10. 工程制图 (装配图)