為什麼優先佇列中過載 小於 時函式內部是用 大於

2021-09-25 10:17:18 字數 619 閱讀 9354

在c++中使用operator關鍵字可以過載系統預定義的運算子,就是按照你自己的想法給這個運算子新增乙個功能,當然過載是要合法的。

比如:

struct node

};

這裡對於結構體變數是不能直接用 < 進行比較的,必須經過過載才行。

但是,有些同學可能不太明白為什麼優先佇列中過載的 < 函式內部進行比較的時候卻用 > 呢?

其實,優先佇列中是要進行排序的,如果a小於b,那就是正確的,不應該將a b交換位置,而如果a大於b, 那說明需要交換位置,所以需要返回乙個真值,來告訴優先佇列,讓小的在前。

這就和傳統的排序一樣,用if判斷a是否大於,如果大於就交換位置。

但是,在sort自定義排序規則時又遵守了,使用者習慣:

#include using namespace std;

bool cmp(int a, int b)

int main()

; sort(a, a+5);

for(int i=0; i<5; i++)

printf("\n");

return 0;

}

優先佇列(過載函式)

優先佇列是stl中比較重要的乙個部分,用起來非常方便,在很多排序題中要比sort一遍一遍排序快很多,它能根據自己定義順序來進行排序。主要的兩種表達形式 其實還有其他的,這裡就先列舉兩個 第一種是用friend bool operator來寫 include includeusing namespac...

過載函式為什麼只在C 下

在程式編寫過程中,我們很多時候能看到也用到過c 下的函式過載,在c語言中沒有函式過載,同樣的重在函式放在c語言中編譯就會出錯,在c 下面函式就不會出錯,下面我們來過載函式 1 過載函式 兩個或者多個函式有同樣的名字,只是它們的返回型別和引數個數以及型別不同。例如 void fun int a voi...

Python為什麼不支援函式過載?

在考慮為什麼python不提供函式過載前,我們要研究為什麼需要提供函式過載。在靜態語言中,方法過載是希望類可以以統一的方式處理不同型別的資料提供可能性。多個同名函式同時存在 函式過載主要解決兩個問題 另外,乙個基本的設計原則是,僅僅當兩個函式除了引數型別和引數個數不同以外,其功能是完全相同的,此時才...