c++中sort函式排序自己寫的類
阿新 • • 發佈:2019-01-02
定義排序函式:
方法1:宣告外部比較函式
bool Less(const Student& s1, const Student& s2) { return s1.name < s2.name; //從小到大排序 } std::sort(sutVector.begin(), stuVector.end(), Less);
注意:比較函式必須寫在類外部(全域性區域)或宣告為靜態函式
當comp作為類的成員函式時,預設擁有一個this指標,這樣和sort函式所需要使用的排序函式型別不一樣。
否則,會出現錯誤
方法2:過載類的比較運算子
bool operator<(const Student& s1, constStudent& s2) { return s1.name < s2.name; //從小到大排序 } std::sort(sutVector.begin(), stuVector.end());
方法3:宣告比較類
struct Less { bool operator()(const Student& s1, const Student& s2) { return s1.name < s2.name; //從小到大排序 } }; std::sort(sutVector.begin(), stuVector.end(), Less());
(一)為什麼要用c++標準庫裡的排序函式Sort()函式是c++一種排序方法之一,學會了這種方法也打消我學習c++以來使用的氣泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間複雜度為n*log2(n),執行效率較高!(二)c++標準庫裡的排序函式的使用方法I)Sort函式包含在標頭檔案為#include<algorithm>的c++標準庫中,呼叫標準庫裡的排序方法可以不必知道其內部是如何實現的,只要出現我們想要的結果即可!II)Sort函式有三個引數:(1)第一個是要排序的陣列的起始地址。(2)第二個是結束的地址(最後一位要排序的地址)(3)第三個引數是排序的方法,可以是從大到小也可是從小到大,還可以不寫第三個引數,此時預設的排序方法是從小到大排序。Sort函式使用模板:Sort(start,end,,排序方法)下面就具體使用sort()函式結合對數組裡的十個數進行排序做一個說明!例一:sort函式沒有第三個引數,實現的是從小到大#include<iostream>
佛擋殺佛