需求:
客戶端收到遊戲中的所有聯盟列表,現在需要按聯盟的屬性比如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的物件,它包含參觀你網點的使用者的資訊,這個物件可以包含諸如使用者名稱 密碼和註冊狀態之類的屬性,將所有這些屬...