我们都知道,sort函数是C++标准库<algorithm>中的一个库函数。它的功能是对数组/容器中的元素进行排序。用法示例如下:

一.对数组进行排序

示例:

    int a[] = {1,3,7,2};
sort(a,a + 4);

这种情况下(即默认情况下),实际上是对数组a进行升序排序。我们也可以修改sort函数中的第三个参数内容,来实现自定义排序。

示例:

bool cmp(int a, int b)
{
return a > b;
}
int main()
{ int a[] = {1,3,7,2};
sort(a,a + 4,cmp);
}

通过自定义cmp函数,就实现了对数组a进行降序排序。当然此处的cmp中的规则比较简单,也可以对结构体、类等其他复杂类型的数据进行排序,不过cmp的内容往往都要改写。(cmp函数是用于定义比较规则的,sort函数正是基于这种规则进行排序的)

二.对容器进行排序(以vector为例)

示例:

 vector<int> a = {1,3,7,2};
sort(a.begin(),a.end());

同数组排序类似,只不过函数的参数不同。降序排序的实现同前面一样。

三.注意事项

  如果要把sort函数要被类中成员函数调用且使用自定义的cmp函数的话,此时cmp函数必须是static函数或者是全局的。

示例:

class test {
static bool cmp(int a,int b)
{
return a > b;
} public:
void fun(vector<int>& a)
{
sort(a.begin(),a.end(),cmp);
}
};

sort中的比较函数compare要声明为静态成员函数或全局函数,不能作为普通成员函数,否则会报错。这是 因为:非静态成员函数是依赖于具体对象的,而std::sort这类函数是全局的,因此无法再sort中调用非静态成员函数。静态成员函数或者全局函数是不依赖于具体对象的, 可以独立访问,无须创建任何对象实例就可以访问。同时静态成员函数不可以调用类的非静态成员。

C++中sort函数小结的更多相关文章

  1. 『嗨威说』算法设计与分析 - STL中Sort函数的实现原理初探

    本文索引目录: 一.对Sort算法实现的个人阅读体会 二.Sort算法使用的三个排序算法的优点介绍 2.1 插入排序的优缺点 2.2 堆排序的优缺点 2.3 快速排序的优缺点 2.4 新的结合排序—— ...

  2. C++中sort函数使用方法

    一.sort函数 1.sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考 ...

  3. <algorithm>中sort()函数的用法

    先说一下,本篇文章我没有讲sort()实现排序的原理,我写在另一篇文章中了,如果想了解的话,可以看一下,附上链接:https://www.cnblogs.com/buanxu/p/12772700.h ...

  4. c/c++中sort函数用法

    转载自博主:九江镇中https://www.cnblogs.com/jjzzx/ c++标准库里的排序函数的使用方法 I)Sort函数包含在头文件为#include<algorithm>的 ...

  5. Matlab中sort函数的使用

    主要看大神们如何使用,先模仿. [~,y] = sort(v),如果v是向量,那么y返回的是v中的下标(不好表达),看下面的,发现y是是下标,对应的是c中元素*(由小到大排序).使用c(y)就得到了由 ...

  6. Excel 中 VLOOKUP() 函数小结

    应用场景: 数据仓库上游源系统的数据库表变更,现在需要拆分一部分数据出来,单独放到一张新表中.假设原表为A,新表为B,B表和A表结构大部分一样,只有字段的前缀不同,那么我们如何找出到底有哪些字段不同呢 ...

  7. C++结构体中使用函数与类中使用函数小结

    #include <iostream>#include <string.h>using namespace std;struct stud//学生信息结构体{    char ...

  8. [原创]java WEB学习笔记42:带标签体的自定义标签,带父标签的自定义标签,el中自定义函数,自定义标签的小结

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. STL sort 函数实现详解

    作者:fengcc 原创作品 转载请注明出处 前几天阿里电话一面,被问到STL中sort函数的实现.以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不 ...

随机推荐

  1. jupyter notebook远程服务器终端连接

    如下图

  2. Unity 3D-AR开发-Vuforia教程手册

    Unity 开发AR之 Vuforia 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar - ...

  3. random module

    import random # 方法返回随机生成的一个实数,它在[0,1)范围内print(random.random())运行结果:0.06435148447021877 # 方法返回随机生成的一个 ...

  4. Blender的单位:一图弄懂Blender的单位

    1设置单位,在右边的场景设置里,可以设置公制,英制.下面还可以设置基础单位长度,就是单位网格对应的长度. 2显示单位,按N出现在右边的属性栏里,可以设置选中的显示长度及角度. 3测量,按T出现在左边d ...

  5. PS学习之如何把小姐姐塞进瓶子里

    准备素材 开始制作 用PS新建一个国际通用纸张大小的画布 分辨率可以调为72 改变背景色 插入图片 水平居中对齐 插入木质素材 放大 覆盖之前的素材 调整图层顺序 创建剪切蒙版 对木桩添加曲线 设置立 ...

  6. CodeChef KILLKTH Killjee and k-th letter

    题意 dt { font-weight: bold; margin-top: 20px; padding-left: 35px; } dd { box-shadow: 3px 3px 6px #888 ...

  7. Gravitee.io alert 引擎架构

    alert 在我们的实际开发中应用的场景很多,我们需要进行系统状态的查看,以及特殊异常请求的处理 参考架构图 从下图可以看出,还是很方便的,同时支持slack email... 的实时消息通知,而且我 ...

  8. wampserver变橙色,apache 服务无法启动!问题解决小记(安装失败亦可参考)

    http://blog.csdn.net/haoaiqian/article/details/58147079 80端口被占用的可能性非常大,关掉IIS即可

  9. Laya播放unity特效

    杭州-fun 2017/12/5 20:47:12  其实网上就有你搜下就有了现成的脚本,设置帧数和截取时间它会截屏并保存成贴图导入laya生成atlas就能用了   就是unity的截屏功能   就 ...

  10. 笔记:Javascript 会提升变量声明

    笔记:Javascript 会提升变量声明 Javascript 会自动提升变量声明,但不会提升变量赋值. 如下代码, 按 F12 控制器显示的是 Hello, undefined 说明只是把 b 了 ...