一:要求

输入乱序的 成绩单 包括 姓名和成绩,成绩按照递增顺序 输出,如果遇见成绩相同的

      按名字的字典序输出。

示例:

输入

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;}}

利用结构体数组实现重排序(详解)相关推荐

  1. C++ 利用结构体数组编写一个程序,对10名小学生的信息进行管理,学生结构体的成员包括姓名、学号、年龄、语文成绩、数学成绩、英语成绩、三门课总分等

    利用结构体数组编写一个程序,对10名小学生的信息进行管理,学生结构体的成员包括姓名.学号.年龄.语文成绩.数学成绩.英语成绩.三门课总分等,具体要求如下: (1)要求通过键盘完成各位小学生的信息录入( ...

  2. c语言动态分配输出学生成绩,C语言之:结构体动态分配内存(利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号、姓名和三门课(高数、物理和英语 )的成绩和平均分(整型)。)...

    题目内容: 利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号.姓名和三门课(高数.物理和英语 )的成绩和平均分(整型). 编写程序,从键盘输入学生的人数,然后依次输入每个学生的学号. ...

  3. C语言结构体中定义函数指针详解

    C语言结构体中定义函数指针详解 结构体指针函数应用场景之一--驱动程序编写 结构体的一些基本用法 形式1:先定义结构体类型,再定义变量 形式2:在定义类型的同时定义变量 形式3:直接定义变量,用无名结 ...

  4. 【C语言】结构体定义 typedef struct 用法详解和用法小结

    结构体定义 typedef struct 用法详解和用法小结 文章目录 结构体定义 typedef struct 用法详解和用法小结 0. 前言 1. 首先:在C中定义一个结构体类型要用typedef ...

  5. 结构体,联合体,枚举详解

    结构体,联合体,枚举详解 目录 结构体 联合体 枚举常量 1.结构体 在C语言中,系统已经提供了一些数据类型,比如float,int,double,char等,但是我们有时会需要更复杂的类型来描述一个 ...

  6. c语言结构体定义和使用typedef,结构体定义typedef struct 用法详解

    typedef是类型定义的意思,typedef struct是为了使用这个结构体方便. 在了解typedef之前我们先来了解一下什么是结构体类型: C++提供了许多种基本的数据类型(如int.floa ...

  7. 结构体定义 typedef struct 用法详解和用法小结

    typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便. 具体区别在于:  若struct node{ }这样来定义结构体的话.在定义 node 的结构体变量时,需要这 ...

  8. MSG结构体和WndProc窗口过程详解

    MSG结构体和WndProc窗口过程对于Windows编程非常重要,如果不了解它们,可以说就没有学会Windows编程. MSG结构体 MSG 结构体用来表示一条消息,各个字段的含义如下: typed ...

  9. volatile禁止重排序详解

    首先说明本文并不是讲解volatile不保证原子性.如何保证可见性xxxx,还不懂的请参考 让你彻底理解volatile 并发关键字volatile(重排序和内存屏障) 本文针对以下两个问题解答 1. ...

最新文章

  1. python做直方图-python实现直方图的应用
  2. Python中的test测试
  3. mysql bind param_为什么bindParam必须要指定类型?
  4. 设计模式のObserver Pattern(观察者模式)----行为模式
  5. C/C++内存分配方式 .
  6. JSON数据格式---JSON语法规则、JSON文件
  7. dedecms切换模板css,DEDECMS的模板的css的详细解释 -电脑资料
  8. 天地图给一个区域添加标题_一个小罐子就能做腌酸菜,7天就能吃,无任何添加,吃着更放心...
  9. Chrome浏览器最新版驱动包下载
  10. C语言编程can通讯ab8位字符,计算机专业对口升学专业试题
  11. 华为5g鸿蒙麒麟,华为5G亮王牌:鸿蒙系统+7800W+麒麟990+防水,钱包按耐不住!
  12. php7会带领,php7中不能做的10件事
  13. php 极光im注册用户,极光IM- 用户信息管理 - 极光文档
  14. vue中使用阿里矢量库彩色图标办法
  15. js 调用jsp java代码_如何在 js 代码中使用 jsp 标签或 Java 代码
  16. goland切换换行/不换行快捷键
  17. bat并行调用打包bat总结
  18. xp计算机找不到音量调节,WinXP电脑没声音且小喇叭不见了如何解决?
  19. R语言ggcharts包的dumbbell_chart函数可视化哑铃图(对比两个年份数据的差异)、scale_y_continuous函数中的labels参数自定义设置X轴坐标标签的格式
  20. oppoAndroid面试题,retrofit解析

热门文章

  1. ASP.NET Core中间件(Middleware)实现WCF SOAP服务端解析
  2. MySQL-03:数据表操作基本命令笔记
  3. java 物理内存_聊聊Java中的内存
  4. 十大排序总结(js实现、稳定性、内外部排序区别、时间空间复杂度、冒泡、快速、直接选择、堆、直接插入、希尔、桶、基数、归并、计数排序)
  5. [转]Webpack5(从入门到精通)
  6. 【数据结构与算法】拓扑排序问题C语言实现
  7. Excel抽奖小程序
  8. Android之解决JsonObject里面的JsonArray数据会有斜杠问题
  9. C语言之去掉https链接的默认443端口
  10. C和指针之函数之可变参数