C 中的vector排序問題

2021-06-03 20:46:07 字數 1133 閱讀 6675

最近做的東西,要將vector 中的內容輸出,結果發現有些檔案被交替反覆開啟,所以就想吧vector 中的元素排序,學習中發現下面這篇文章總結的挺好的,分享一下也~

c++中當 vector 中的資料型別為基本型別時我們呼叫std::sort函式很容易實現 vector中資料成員的公升序和降序排序,然而當vector中的資料型別為自定義結構體型別時,我們該怎樣實現公升序與降序排列呢?有兩種方法,

下面的例子能很好的說明: 

方法1:

我們直接來看**吧,比較簡單,容易理解:

#include "stdafx.h"

#include

#include

#include

using namespace std;

struct assesstypeinfo

bool operator > 

(const assesstypeinfo& rhs ) 

const //降序排序時必須寫的函式

}int main()

以上方法就可以實現公升序排序,輸出結果為 1 

2 3 

降序排序結果3 

2  1。

方法2 : 

不修改結構體或類的定義部分,我們用函式物件來實現:

#include "stdafx.h"

#include

#include

#include

using namespace std;

struct assesstypeinfo

;bool lessmark(const assesstypeinfo& s1,const assesstypeinfo& s2)

bool greatermark(const assesstypeinfo& s1,const assesstypeinfo& s2)

int main()

以上方法就可以實現公升序排序,輸出結果為 1 

2 3 

降序排序結果3 

2  1。

方法2是一種比較簡單的方法。

以上兩種方法您可根據您自己的需求選擇,並且以上兩種方法在vc++6.0環境下編譯通過,也是自己在實踐過程中的總結,如有不妥的地方,歡迎您指出,至於為什麼這樣使用,請參考 stl演算法中sort 部分。

C 中vector的排序問題

在用vector排序的時候,發現sort 函式有乙個問題,sort排序只會返回排序後的結果,不會返回每個排序後的結果在原來的編號。templatebool cmp const pair x,const pair y templatevoid sortvector vector value,vecto...

vector排序問題

要對vector中的自定義型別進行排序,首先需要提供乙個函式bool comp const interval a,const interval b 來定義型別的排序準則 然後呼叫std sort intervals.begin intervals.end comp 寫了幾個小的測試用例也都通過了,但...

vector中的排序

第一種方法 include stdafx.h include include include using namespace std struct assesstypeinfo bool operator const assesstypeinfo rhs const 降序排序時必須寫的函式 int ...