C 中,結構體vector使用sort排序

2021-07-07 06:24:58 字數 1175 閱讀 7875

今天寫**的是遇到想對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...