C Vector 中自定義物件的排序

2022-07-10 09:45:14 字數 1694 閱讀 5187

需求:

客戶端收到遊戲中的所有聯盟列表,現在需要按聯盟的屬性比如lv來進行排序。

資料儲存:

每個聯盟資料是乙個物件,所有的聯盟列表存在乙個vector容器裡面。

老的解決方法:

氣泡排序方法演算法

新的方法:

參考總結使用c++自帶的std::sort函式。

詳細方法:

軍團物件,定義了軍團的各種簡單屬性

class alliancedata

;

定義用來比較的函式物件,我們命名為comphelper.h

#ifndef _comphelper_h_

#define _comphelper_h_

#include "alliancedata.h"

//公升序排列

class compless

}; //降序排列

class compgreater

};

#endif // _comphelper_h_

我們呼叫時這樣:

std::vectorv_a;

alliancedata m;

m.uid = "1";

m.aname ="name1";

m.alv = 6;

v_a.push_back(m);

m.uid = "1";

m.aname ="name1";

m.alv = 6;

v_a.push_back(m);

m.uid = "1";

m.aname ="name1";

m.alv = 6;

v_a.push_back(m);

sort(v_a.begin(),v_a.end(),compgreater());//降序排列

假如你又要對已有的裝備排序,那麼可直接在comphelper.h 中過載()方法即可,比如:

#ifndef _compheloer_h_

#define _compheloer_h_

#include "alliancedata.h"

#include "armydata.h"

#include "equipmentdata.h"

//公升序排列

class compless

bool operator ()(const commanderdata& pstitem1, const commanderdata pstitem2)

bool operator ()(const equipmentdata& pstitem1, const equipmentdata pstitem2)

}; //降序排列

class compgreater

bool operator ()(const commanderdata& pstitem1, const commanderdata pstitem2)

bool operator ()(const equipmentdata& pstitem1, const equipmentdata pstitem2)

};

#endif // _compheloer_h_

總結:排序的方法有很多中,可參考

通過參考這個,我個人覺得函式物件的方法使用最方便,維護量少,而且統一。

C ,vector 自定義型別的排序

c vector的排序 通過過載 方便,看起來好看 還可以自定義比較函式 四個標頭檔案,特別要注意須包含 下面才能用less include include include include using namespace std class cvalue 過載 void operator const...

物件陣列。自定義物件

定義學生類屬性 自定義方法 顯示學生資訊方法年齡增加方法測試類 建立用於儲存學生的陣列,長度為5,建立5個學生物件,將物件儲存到陣列中遍歷陣列中的學生物件,分別呼叫年齡增加方法,將學生年齡增加2遍歷陣列中的學生物件,分別呼叫顯示資訊的方法,檢視所有學生資訊查詢年齡大於20的學生資訊 針對這個作業。寫...

建立自定義物件

你並不侷限於前幾節所討論的jscript的內建物件,你可以自定義包含有你自己的方法和屬性的物件來擴充jscript,這是jscript的乙個強大的特性。例如,你可以建立乙個名為webuser的物件,它包含參觀你網點的使用者的資訊,這個物件可以包含諸如使用者名稱 密碼和註冊狀態之類的屬性,將所有這些屬...