【问题标题】:why is less<T> comparator used for max heap and greater<T> for min heap?为什么 less<T> 比较器用于最大堆而更大<T> 用于最小堆?
【发布时间】:2021-01-21 05:52:18
【问题描述】:

不应该是相反的吗? 当我们将它们用作比较器时,我们所说的越来越详细是什么意思 我不明白对此的完整解释,请有人帮助我。

【问题讨论】:

  • 你知道这两个比较器是可以互换的,取决于参数的顺序,不是吗?
  • 我比我哥哥大5岁,他声称比我小5岁。谁是对的?
  • 这很方便,因为您只需要为您的类型实现 &lt; 即可以默认顺序处理有序库集合。

标签: c++ comparator priority-queue


【解决方案1】:

使用比较器来决定一个元素a 是否在之前另一个元素b 之前是一个惯例问题。这就是为什么使用递增顺序 a &lt; bstd::less 和递减顺序 a &gt; b / std::greater

如果约定相反:使用比较器来决定哪个元素最后出现。那么&lt; 会导致降序,&gt; 会导致升序。

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 2014-10-24
    • 2018-04-14
    • 2019-03-21
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    相关资源
    最近更新 更多