zoukankan      html  css  js  c++  java
  • sort中自定义cmp函数不能是<=

    转自:https://blog.csdn.net/qq_29883591/article/details/69063253

    1.问题

    在做354. 俄罗斯套娃信封问题题目时,写的sort函数:

    sort(envelopes.begin(),envelopes.end(),[](const vector<int>& a,const vector<int>& b){return a[0]<=b[0];});

    本来的想法是让它按非递减排序,给的样例能通过,但是提交会有样例报错。 heap-buffer-overflow on address 0x617000000068,但是搜索的解决办法都是说访问了不该访问的下标。

    2.sort排序算法性质

    c++中默认的比较操作是<运算符,用来处理非降序的排序要求,提供的操作必须在关键字类型上定义一个严格弱序。可以将严格所需看做“小于等于”,但“小于等于”不是<=   !!!。

    但比较函数必须具备一以下三个:

     但如果比较函数中使用<=:

     条件1和条件3都不符合,当测试数据中有相等的数据出现时,就会报错。invalid comparator。

  • 相关阅读:
    hbase
    spark-streaming
    spark-Scala
    经典台词二
    星爷电影经典台词一
    Hadoop第一阶段总结
    测试2
    POI 表格数据导出
    GC垃圾回收机制
    Java常见的200道面试题
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/14486830.html
Copyright © 2011-2022 走看看