我们知道,c和c++下各有一个排序函数,分别为qsort和sort。显然,c++的sort函数更方便,也更优雅,所以我们在实战时经常使用sort()函数。
下面介绍sort()函数的参数类型:

sort(首元素地址,末元素地址的下一个地址,比较函数)

其中,前两个参数为必填项,最后一个参数是选填项,如果不填最后一项,sort函数默认进行递增排序。

下面来一个例子:

#include <bits/stdc++.h>
using namespace std;int main(){int a[5]={5,3,1,4,2};sort(a,a+5);//注意第二个参数for(int i=0;i<5;i++)cout<<a[i]<<' ';return 0;
}

输出为:1 2 3 4 5

上例是以int型为例,double,char型用法与其相同。(char型默认按字典序排序)

下面来讨论cmp函数的使用场景和用法。

在我们想自定义排序顺序(从大到小或者从小到大)或者给结构体里的元素排序时,我们不可避免地会用到cmp函数,下面给出编写sort()函数的代码:(以int型元素为例,double和char同理)

降序排序的cmp函数:

bool cmp(int a,int b)
{return a>b;//这里可理解为如果a大于b,就把a放在b前面
}

升序排序的cmp函数:

bool cmp(int a,int b)
{return a<b;
}

下面来看示例:

#include <bits/stdc++.h>
using namespace std;
bool cmp(int a,int b)
{return a>b;
}
int main(){int a[5]={5,3,1,4,2};sort(a,a+5,cmp);for(int i=0;i<5;i++)cout<<a[i]<<' ';return 0;
}

输出为:5 4 3 2 1

最后,cmp函数可以指定结构体里的特定元素进行排序;sort函数也可以应用在vector、deque、string容器中,这里不过多讨论。

c++ stl下的sort()函数介绍及基本用法相关推荐

  1. STL里面的sort()函数使用结构体

    当用sort()想对结构体进行排序的时候,这时候就需要自己写一个排序函数了 写这个是因为自己好久没用STL里面的sort()函数了.都忘记了 .再次实现一下 其实排序函数也很简单,自己实现 代码如下: ...

  2. c++ hashset的用法_c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例

    c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器.set/multiset会根据待定的排序准则,自动将元素排序.两者不同在于前者不允许元素重复,而后者允许. 1 ...

  3. stl排序之sort函数

    STL容器的排序,支持随机访问的容器vector,deque,string没有sort成员,可调用std::sort排序:list排序调用自带的list::sort. 下面是std::sort函数,有 ...

  4. 为什么map对象不能使用stl中的sort函数

    STL所提供的各式各样算法中,sort()是最复杂最庞大的一个.这个算法接受两个RandomAccestlerators(随机存取迭代器),然后将区间内的所有元素以渐增方式由小到大重新排列.第二个版本 ...

  5. C语言—sort函数比较大小的快捷使用--algorithm头文件下

    sort函数 一般情况下要将一组数从的大到小排序或从小到大排序,要定义一个新的函数排序. 而我们也可以直接使用在函数下的sort函数,只需加上头文件: #include<algorithm> ...

  6. sort函数的基本使用

    sort函数是C++中STL(标准模板库)头文件<algorithm>中的一个函数,主要用于对数组或向量等容器进行排序.在计算机程序设计中,排序是一项基本的操作,可以帮助我们更方便地进行查 ...

  7. c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件

    Vectors 包含着一系列连续存储的元素,其行为和数组类似.访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线 ...

  8. C++中sort函数

    基本语法 首先,C++中使用sort函数的时候需要加上头文件#include<algorithm>. 并且sort函数的语法格式为: void sort (RandomAccessIter ...

  9. c语言sort函数排序二维数组,关于C++ 的 sort 对二维数组排序。该如何解决

    关于C++ 的 sort 对二维数组排序. 有一个二维数组.假设是 N * N: 需要对某个位置的X(横向排序).或者某个位置的Y(纵向排序). 例如: 4 6 5 1 3 2 8 7 9 对 2 行 ...

  10. 不可不知的STL sort函数实现原理

    sort函数一直以来被认为是快排,今天看到一篇文章,感觉自己知道的太少. 建议大家还是要去啃<STL源码剖析>,我也要去读了,先立个flag,后续1-2个月写STL源码剖析上得到的启发. ...

最新文章

  1. Simulink仿真教程2---一些基本操作
  2. 解决WINCE500中INTEL编译器无法完全卸载的问题
  3. python这个软件学会能做什么工作-学会Python后都能做什么?网友们的回答简直不要太厉害...
  4. MacOS使用brew无法安装Python_无法安装gdbm_无法安装autojump
  5. 近5年133个Java面试问题列表
  6. react初识生命周期
  7. 将一个包含汉字的字符串逐个转化为数字,并得出该字符串的十进制和
  8. MySQL子查询原理分析
  9. 微课|中学生可以这样学Python(例7.2):三维向量类
  10. 【Python之旅】第四篇(二):Python异常处理与异常捕捉
  11. 激活策略 查询_苹果手机未激活也可能不是原装货,激活过的手机到底能不能买?...
  12. 福建省小学四年级上册计算机知识点总结,小学四年级上册数学知识点大全【1-6单元】...
  13. 关于Iphone 4 如何用itunes备份短信等设置
  14. 办公小技巧,批量修改文件名,手把手教你
  15. 用shell脚本猜大小
  16. 树莓派基础实验24:超声波测距传感器实验
  17. 【实习日记】实习第N天 从零开始搭建一个tiktok puppet(一)
  18. OC中的数组:NSArray
  19. 分布式医疗云平台(项目功能简介截图)【系统管理(科室管理、用户管理、角色管理、菜单管理 、字典管理、通知公告管理 、检查费用设置、挂号费用设置 )】】(四)-全面详解(学习总结---从入门到深化)
  20. 机器学习01-超平面理解

热门文章

  1. Picnic Planning
  2. 【python】编程语言入门经典100例--23
  3. oracle忘记sys密码处理
  4. Kerio Network Monitor
  5. 微软切断XP供应 Vista成制造商惟一选择
  6. Java基础之Java 修饰符
  7. jenkins集成钉钉
  8. 金阳光测试算法专题——精选小算法汇总
  9. 分布式数据库中间件–(1) Cobar初始化过程
  10. 打印出现:You've implemented -[UIApplicationDelegate application:didReceiveRemoteNotification:...