為什麼過載小於運算子,在return語句裡返回大於?

時間 2021-06-04 10:31:04

1樓:

因為priority_queue在預設情況下會使用<(準確地說是less)進行比較運算,且缺省會構造大根堆。例如,在我的環境中,priority_queue的原型是:

template

_Tp,

typename

_Sequence

=vector

<_Tp>

,typename

_Compare

=less

_Sequence

::value_type

>>class

priority_queue

;如果你的HeapNode結構體的小於運算子的過載返回的是小於,那就是預設的大根堆。但如果小於運算子的過載返回的是大於,那每次比較的結果都和原來完全相反了,也就成為了小根堆

其實也可以不用自定義結構體,直接這樣:

priority_queue

vector

,greater

>Q;

// C++11前,最後兩個》間必須有空格這樣就可以用>(準確地說是greater)進行比較,直接就是小根堆了。

C 過載運算子如何確定運算子位置?

可以表示兩種運算元 加法或正。a a b 這兩個 是不同的。Struct const operator Struct const value Struct const operator Struct const v1,Struct const v2 a 等同於 operator a a b 等同於 ...

過載賦值運算子和加號運算子中const 的作用是什麼?

王浩 一 函式形參為非const 非引用 Box operator Box abox 呼叫者box1為非const,實參box2為非const Boxoperator Boxabox Box operator Boxabox int main 呼叫者box1為非const,實參box2為const ...

MATLAB 能否用運算子過載完成複數計算?

iamxuxiao OOP中的過載請參加我的這篇文章 iamxuxiao MATLAB算符過載和量綱分析 這樣做的目的是為了減少擊鍵,減少轉換的次數 你的這個要求完全合理,各種語法糖的初衷都是更簡潔的表達。但是不能為了簡潔而犧牲表達的精確性,你的 5 20 6 10 我如果不看解釋是不會明白是什麼意...