普通网友 2022-07-19 17:48 采纳率: 40%
浏览 21
已结题

cmp中<与-之间的区别

问题遇到的现象和发生背景

leetcode刷题中cmp用<可以而 -不行,有什么区别吗

问题相关代码,请勿粘贴截图
//这个为啥不行啊leetcode905把偶数排前面
class Solution {
public:
    static int cmp (int a, int b) {
        return a%2-b%2;
      
    }
    vector<int> sortArrayByParity(vector<int>& a) {
        sort (a.begin(), a.end(), cmp);
        return a;
    }
};
 

运行结果及报错内容

img

img

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

4条回答 默认 最新

  • 林地宁宁 2022-07-19 19:00
    关注

    首先用 < 绝对正确,也符合 std::sort 的参数要求。如果用 -,由于 std::sort 第三个参数是一个返回值为 bool 的函数,当这个函数返回值为 True 的时候,表示第一个数应该在第二个数前面,而 bool 类型的如果从 int 类型转换,会导致除了 0 以外的全部变为 True。考虑下面情况,a%2==1b%2==0 ,则在 < 写法中返回 false,而在 - 写法中返回 -1,被转为 true,明显结果不符合。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 7月28日
  • 已采纳回答 7月20日
  • 创建了问题 7月19日

悬赏问题

  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥20 spring boot集成mqtt的使用问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物