今天寫**的是遇到想對vector進行排序的問題,隱約記得std::sort函式是可以對vector進行排序的,但是這次需要排序的vector中壓的是自己定義的結構體(元素大於等於2),想以其中某乙個元素進行正序或逆序排序,則不能直接使用sort函式。
1.c++中當 vector 中的資料型別為基本型別時,我們呼叫std::sort函式很容易實現 vector中資料成員的公升序和降序排序,**如下(摘自
// sort algorithm example
#include // std::cout
#include // std::sort
#include // std::vector
bool myfunction (int i,int j)
輸出為:
myvector contains: 12 26 32 33 45 53 71 80
2.然而當vector中的資料型別為自定義結構體型別時,我們該怎樣實現排序?
其實就是對上面**中std::sort函式的第三個引數comp呼叫的函式或object進行修改即可。在這裡我們使用函式作為comp作為例子,**如下:
#include #include #include using namespace std;
struct point2
;bool greatersort (point2 a,point2 b)
bool lesssort (point2 a,point2 b) { return (a.xaaa;
point2 temp;
temp.x=1;
temp.y=1;
aaa.push_back(temp);
temp.x=2;
temp.y=2;
aaa.push_back(temp);
temp.x=3;
temp.y=3;
aaa.push_back(temp);
sort(aaa.begin(),aaa.end(),greatersort);//降序排列
cout<<"greater sort:"<
以上**在visual stdio 2012環境下編譯通過,也是自己在實踐過程中的總結,如有不妥的地方,歡迎您指出。
未經允許請勿用於商業用途)
結構體vector使用總結
主要有以下幾種方法 cpp view plain copy vector list list.push back 1 list.push back 2 一 初始化構造時拷貝 cpp view plain copy vector tem list 這種拷貝,相當於複製了乙份資料,list中的資料不變。...
結構體容器vector
最近在做處理資料的問題,本來想建立乙個結構體,裡面存放兩個陣列,在乙個main函式裡進行了設計,也能成功執行,但是寫成函式呼叫的形式就會出錯,並且這種寫法必須設定陣列的大小。include include using namespace std int main stu for int i 0 i ...
C 中,自定義結構體vector的排序
c 中當 vector 中的資料型別為基本型別時我們呼叫std sort函式很容易實現 vector中資料成員的公升序和降序排序,然而當vector中的資料型別為自定義結構體型別時,我們該怎樣實現公升序與降序排列呢?有兩種方法,下面的例子能很好的說明 方法1 我們直接來看 吧,比較簡單,容易理解 i...