利用结构体数组实现重排序(详解)
一:要求
输入乱序的 成绩单 包括 姓名和成绩,成绩按照递增顺序 输出,如果遇见成绩相同的
按名字的字典序输出。
示例:
输入
5
w 12
a 12
v 7
c 3
e 9
输出:
c 3
v 7
e 9
a 12
w 12
二:代码实现
#include<bits/stdc++.h>
using namespace std;struct Node {string name;int grate;
};bool cmp(Node node1,Node node2) {if(node1.grate == node2.grate) return node1.name < node2.name; return node1.grate < node2.grate;
}int main() {Node* node = new Node[100];int n;cin >> n;for (int i = 0; i < n; i++) {cin >> node[i].name >> node[i].grate;}sort(node,node+n,cmp);for (int i = 0; i < n; i++) {cout << node[i].name << " " << node[i].grate << endl; }}
三:知识扩展关于重排序
1:vector的sort方法也可以实现重新排序
(1):bool函数
bool cmp(int a,int b) {return a > b;
}
(2):代码
#include<bits/stdc++.h>
using namespace std;bool cmp(int a,int b) {return a > b;
}int main() {int n;vector<int> v;cin >> n;for (int i = 0; i < n; i++) {int nums;cin >> nums;v.push_back(nums);}sort(v.begin(),v.end(),cmp);for(auto temp : v) {cout << temp << " ";}
}
2:map也可以实现重排序
(1):前言
这里map实现的是对key值得升序遍历,那么我们利用迭代器得逆序遍历不就实现降序处理了吗
(2):核心代码
map<int,int>::reverse_iterator mt;for (mt = m.rbegin(); mt != m.rend(); mt++){//注意遍历的时候是rbegin(),r,end()
}
/**思路:这里实现逆序主要是利用迭代器逆序遍历 */#include<bits/stdc++.h>
using namespace std;int main() {map<int,int> m;map<int,int>::reverse_iterator mt; int a[5] = {5,4,3,2,1};for(int i = 0; i < 5; i++) {m[a[i]] = i;}for (mt = m.rbegin(); mt != m.rend(); mt++) {cout << mt->first << " " << mt->second << endl;}}
利用结构体数组实现重排序(详解)相关推荐
- C++ 利用结构体数组编写一个程序,对10名小学生的信息进行管理,学生结构体的成员包括姓名、学号、年龄、语文成绩、数学成绩、英语成绩、三门课总分等
利用结构体数组编写一个程序,对10名小学生的信息进行管理,学生结构体的成员包括姓名.学号.年龄.语文成绩.数学成绩.英语成绩.三门课总分等,具体要求如下: (1)要求通过键盘完成各位小学生的信息录入( ...
- c语言动态分配输出学生成绩,C语言之:结构体动态分配内存(利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号、姓名和三门课(高数、物理和英语 )的成绩和平均分(整型)。)...
题目内容: 利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号.姓名和三门课(高数.物理和英语 )的成绩和平均分(整型). 编写程序,从键盘输入学生的人数,然后依次输入每个学生的学号. ...
- C语言结构体中定义函数指针详解
C语言结构体中定义函数指针详解 结构体指针函数应用场景之一--驱动程序编写 结构体的一些基本用法 形式1:先定义结构体类型,再定义变量 形式2:在定义类型的同时定义变量 形式3:直接定义变量,用无名结 ...
- 【C语言】结构体定义 typedef struct 用法详解和用法小结
结构体定义 typedef struct 用法详解和用法小结 文章目录 结构体定义 typedef struct 用法详解和用法小结 0. 前言 1. 首先:在C中定义一个结构体类型要用typedef ...
- 结构体,联合体,枚举详解
结构体,联合体,枚举详解 目录 结构体 联合体 枚举常量 1.结构体 在C语言中,系统已经提供了一些数据类型,比如float,int,double,char等,但是我们有时会需要更复杂的类型来描述一个 ...
- c语言结构体定义和使用typedef,结构体定义typedef struct 用法详解
typedef是类型定义的意思,typedef struct是为了使用这个结构体方便. 在了解typedef之前我们先来了解一下什么是结构体类型: C++提供了许多种基本的数据类型(如int.floa ...
- 结构体定义 typedef struct 用法详解和用法小结
typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便. 具体区别在于: 若struct node{ }这样来定义结构体的话.在定义 node 的结构体变量时,需要这 ...
- MSG结构体和WndProc窗口过程详解
MSG结构体和WndProc窗口过程对于Windows编程非常重要,如果不了解它们,可以说就没有学会Windows编程. MSG结构体 MSG 结构体用来表示一条消息,各个字段的含义如下: typed ...
- volatile禁止重排序详解
首先说明本文并不是讲解volatile不保证原子性.如何保证可见性xxxx,还不懂的请参考 让你彻底理解volatile 并发关键字volatile(重排序和内存屏障) 本文针对以下两个问题解答 1. ...
最新文章
- python做直方图-python实现直方图的应用
- Python中的test测试
- mysql bind param_为什么bindParam必须要指定类型?
- 设计模式のObserver Pattern(观察者模式)----行为模式
- C/C++内存分配方式 .
- JSON数据格式---JSON语法规则、JSON文件
- dedecms切换模板css,DEDECMS的模板的css的详细解释 -电脑资料
- 天地图给一个区域添加标题_一个小罐子就能做腌酸菜,7天就能吃,无任何添加,吃着更放心...
- Chrome浏览器最新版驱动包下载
- C语言编程can通讯ab8位字符,计算机专业对口升学专业试题
- 华为5g鸿蒙麒麟,华为5G亮王牌:鸿蒙系统+7800W+麒麟990+防水,钱包按耐不住!
- php7会带领,php7中不能做的10件事
- php 极光im注册用户,极光IM- 用户信息管理 - 极光文档
- vue中使用阿里矢量库彩色图标办法
- js 调用jsp java代码_如何在 js 代码中使用 jsp 标签或 Java 代码
- goland切换换行/不换行快捷键
- bat并行调用打包bat总结
- xp计算机找不到音量调节,WinXP电脑没声音且小喇叭不见了如何解决?
- R语言ggcharts包的dumbbell_chart函数可视化哑铃图(对比两个年份数据的差异)、scale_y_continuous函数中的labels参数自定义设置X轴坐标标签的格式
- oppoAndroid面试题,retrofit解析
热门文章
- ASP.NET Core中间件(Middleware)实现WCF SOAP服务端解析
- MySQL-03:数据表操作基本命令笔记
- java 物理内存_聊聊Java中的内存
- 十大排序总结(js实现、稳定性、内外部排序区别、时间空间复杂度、冒泡、快速、直接选择、堆、直接插入、希尔、桶、基数、归并、计数排序)
- [转]Webpack5(从入门到精通)
- 【数据结构与算法】拓扑排序问题C语言实现
- Excel抽奖小程序
- Android之解决JsonObject里面的JsonArray数据会有斜杠问题
- C语言之去掉https链接的默认443端口
- C和指针之函数之可变参数