sort函数中的cmp函数使用 |
您所在的位置:网站首页 › 排序使用的函数怎么写 › sort函数中的cmp函数使用 |
sort函数中的cmp函数使用
在leetcode上面刷题的时候发现大家使用sort函数的时候总能用出一些与众不同的比较方式,其中使用cmp自己定义排序放的非常的方便,因此我们这里记录一下cmp的使用。 首先我们先来看一下最基础的排序方式: 这样我们得到的结果就是一个非常简单的非递减排序 那么cmp函数的使用是怎么样的呢,cmp函数的定义其实很奇特,他是一个返回值为bool类型的函数,它定义的内容其实是“小于”,可能这么讲不太清楚,所以我们先看个例子: 在主函数前我们新定义了一个cmp(什么名字都行),然后主要看里面的判断,其中返回值是a>b的真假。如果a>b,那么返回值为真,也就是说在这里,a>b的情况才是“小于”,所以比较大的值a其实这时候是“小于”b的,所以sort就通过我们定义的“小于”去重新排列,排列出的顺序应该是和上面的例子相反的结果,运行得到下面结果: 这里讲解的是比较基础的定义cmp,下面介绍更高阶的定义模式,我们这个例子还是使用大家非常熟悉结构,学生姓名以及学生成绩,我们可以看到每个学生都会有一个姓名和一个成绩,我们想要对学生按成绩进行排名,那么方式就如下所示: #include #include using namespace std; struct student { string name; int grade; }; bool cmp(student a, student b) { return a.grade < b.grade; } int main() { student students[8]; students[0].name = "wang_jie"; students[1].name = "wu_jie"; students[2].name = "zhao_jie"; students[3].name = "sun_jie"; students[4].name = "li_jie"; students[5].name = "zheng_jie"; students[6].name = "qian_jie"; students[7].name = "feng_jie"; for (int i = 0; i < 8; ++i) { students[i].grade = 100 - rand()%20;//其实就是随机给人员打成绩 } //我怀疑有的老师就是这么打成绩的 //sort(students, students + 8); sort(students, students + 8, cmp); for (int i = 0; i < 8; ++i) { cout |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |