C 結構體排序(運算子過載,比較函式重寫)

2021-10-03 15:32:23 字數 710 閱讀 2387

對於雙(多)標準的結構體排序,有三種方法可供參考。

struct numberans[maxsize];
比較規則:將結構體按cnt降序排列,若cnt值相同時,按val公升序排。

1.比較函式的重寫

bool cmp(const number a,const number b)

sort(ans,ans+length,cmp);

2.結構體內部運算子過載

struct number 

}ans[maxsize];

//sort 預設公升序排列,過載 < 就是重寫sort的規則

sort(ans,ans+length);

3.外部運算子過載

執行結果:

但三種方法裡第一種比較函式的重寫沒有後兩種效率高。

結構體運算子過載

c 中,結構體是無法進行 這些操作的,這也帶來了很多不方便的地方,尤其是在使用stl容器的時候,如果我們可以往語句中傳入結構體,一些事情將會變得很簡單。比如二分查詢,binary crearch只能對陣列進行查詢,如果是結構體陣列的話,它會報錯。但很可惜,實際程式設計中,大部分時候操作物件是結構體陣...

C 過載《運算子及排序結構體

c 的string已經定義了各種比較運算子。c風格的字串 char陣列 則採用strcmp比較字串大小。詳細見下 include include include using namespace std 先按成績比較 成績相同按名字,名字相同按年齡 struct student int main st...

結構體的運算子過載

1 定義結構體 structcurrency 2 過載io輸出操作,在結構體內部將輸入操作的過載定義為友元函式過載 friendostream operator ostream out,currency value 在結構體外部進行具體定義 ostream operator ostream out,...