C++ sort()函数cmp的含义

2023-05-16

头文件:#include <algorithm>
  std::sort(first,last,cmp);

使用的范围是[first,last)

省略 cmp,使用 sort(first,last), 则默认从 小到大排序。
使用 sort(first,last, greater<T>() ), 则 从 大到小排序。
如果是结构体或者自定义排序规则,则需要自定义cmp 函数。
相等最好返回 false

cmp函数的含义:如果返回值是 True,表示 要把 序列 (X,Y),X放Y前。

bool cmp(int &x,int &y){ 
  return x>y;//意味着x>y的时候,把x放到y前,按大到小排序。 
}

注意事项:cmp函数的比较必须按严格弱序排序,也就是严格定义<,a和b比较,如果a==b,必须返回false,否则会触发异常。
比如:

bool cmp(const T &t1, const T &t2)
{
	if (t1.time <= t2.time)
		return true;
	else
		return false;
}

比较里写成“<=”会触发异常,应改为:

bool cmp(const T &t1, const T &t2)
{
	if (t1.time < t2.time)
		return true;
	else
		return false;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ sort()函数cmp的含义 的相关文章

随机推荐

  • delay函数

    在VC中使用带上头文件 include lt windows h gt 注意 在VC中Sleep中的第一个英文字符为大写的 34 S 34 在标准C中是sleep 不要大写 下面使用大写的来说明 具体用什么看你用什么编译器 简单的说VC用S
  • 51单片机的中断和定时(全面)

    定时器 计数器 51的定时器 计数器有2个分别是T1和T0 52系列的单片机有3个定时器 计数器 xff0c T0和T1是通用定时器 计数器 xff0c 定时器 计数器2 xff08 简称T2 xff09 是集定时 计数和捕获三种功能于一体
  • 什么是信号完整性?(大白话)

    什么是 信号完整性 xff1f 可能很多人仍然感觉这个词很陌生 xff0c 尤其是哪些没有接触过所谓高速PCB的工程师来说更是如此 于博士网就给大家做一个直观的说明 我们在用示波器测量PCB板上信号时 xff0c 经常会在信号的波形上发现一
  • 什么是高速PCB?

    高速PCB是一个很流行的名词 xff0c 那么到底什么是高速PCB xff1f 可能没几个人能说清楚 xff0c 原因在哪 xff1f 于博士网阐述一下我们对高速PCB这一名词的见解 有一种观点认为 xff1a 数字电路的速率达到或者超过4
  • epoll LT/ET 深入剖析

    epoll LT ET 深入剖析 EPOLL事件有两种模型 xff1a Level Triggered LT 水平触发 socket接收缓冲区不为空 有数据可读 读事件一直触发 socket发送缓冲区不满 可以继续写入数据 写事件一直触发
  • PCB布局布线1

    1 1mil 61 0 001inch 61 0 0254mm oz质量单位 xff0c 指铜厚 2 层叠结构 1 走线长度 宽度 厚度影响寄生电容电感 2 电源层和地层都比较厚 xff1a a 屏蔽辐射干扰 串扰b 减小阻抗3 3 走线电
  • 大功率连接器(电源和信号)

    EXtreme Power连接器 xff08 7 5mm xff09
  • Altium Designer高级布线技巧

    1 模块化复用 选择两个或多个元件 右击 union 联合 创建联合 选择模块 M O键 输入角度 点击模块 2 同一模块在不同工程中布局布线复用
  • 02.算术左移逻辑左移,算术右移逻辑右移

    xfeff xfeff 1 算术左移逻辑左移 算 术左移和逻辑左移一样都是右边补0 xff1a 比如 00101011 算术左移一位 01010110 逻辑左移一位 01010110 对于二进制的数值来说左移n位等于原来的数值乘以2的n次方
  • Bellman-Ford(单源最短路径,判断是否有负权环路)

    Bellman Ford 1 初始化 xff1a 将除源点外的所有顶点的最短距离估计值 d v 43 d s 0 2 迭代求解 xff1a 反复对边集E中的每条边进行松弛操作 xff0c 使得顶点集V中的每个顶点v的最短距离估计值逐步逼近其
  • C语言第一个程序(超详细)

    include lt stdio h gt 包含一个叫stdio h的文件 std 标准 standard input output int main int 是整型的意思 main前面的int表示main函数调用返回一个整型值 inclu
  • warning:initialization discards ‘const’ qualifier from pointer target type 解决方法

    initialization discards const qualifier from pointer target type 意思是 xff0c 初始化时丢掉了 xff08 目标类型的 xff09 const 限定符 eg const
  • [C/C++]写出几个无限循环

    1 写出几个死循环 while 1 注 xff1a 1不可省略 for 注 xff1a 第一个条件为初始条件 xff0c 第二个条件是循环结束条件 xff0c 第三个表达式是变更表达式 循环结束条件若是省略的话 xff0c 应写入循环体中
  • 数据结构之队列

    一 链式队列 数据结构 xff1a 两个指向节点的指针front rear 当链队为空时 xff0c front和rear都指向头节点 因此出队时 xff0c 删除队尾节点时要注意 xff01 link queue h 1 typedef
  • 二叉树

    1 二叉树节点的创建 xff08 初始化 xff09 tree c include lt stdlib h gt include 34 tree h 34 struct tree node tree node create data t d
  • 单机千万并发连接实战(修订版)

    c10k xff0c c100k xff0c c1000k等问题大家都已经司空见惯 xff0c 那么10m xff08 千万 xff09 并发连接呢 xff1f 今天就来一起挑战一下 下面我们使用handy库自带的例子程序 xff0c 来跑
  • 如何替换某文件中的所有的特定字符?---linux sed命令(文本编辑命令)

    sed是一个很好的文件处理工具 xff0c 主要是以行为单位进行处理 xff0c 可以将数据行进行替换 删除 新增 选取等特定工作 总 xff1a sed处理对象是文件 xff0c 怎么处理 xff1f 是以逐行处理 xff0c 何种处理
  • WEB点对点程序传输数据,是用HTTP协议还是TCP/IP协议?

    WEB点对点程序传输数据 xff0c 是用HTTP协议还是TCP IP协议 Tcp Ip协议和Http协议有什么区别 两个Web程序点对点传送数据 你会选择那一个 xff1f 今天在网上看到这样一个面试题目 xff0c 引发了一连串的查找资
  • 斜杠“/” 反斜杠“\”

    在Unix Linux中 xff0c 路径的分隔采用正斜杠 34 34 xff0c 比如 34 home hutaow 34 xff1b 而在Windows中 xff0c 路径分隔采用反斜杠 34 34 xff0c 比如 34 C Wind
  • C++ sort()函数cmp的含义

    头文件 xff1a include lt algorithm gt std sort first last cmp 使用的范围是 first last 省略 cmp xff0c 使用 sort first last 则默认从 小到大排序 使