vector儲存結構體時排序和查詢

2021-08-17 06:02:49 字數 594 閱讀 1907

vector是乙個很強大的容器,#include後就可以直接使用許多演算法,如排序、查詢等,但是當vector內部儲存結構體時,這些演算法就就不能直接使用了

如定義結構體如下:

struct mydata

string name;

float value;

只需要定義乙個比較函式

bool operator == (const info& left, const info& rigt) 

else  }

下面實現乙個功能,找到名字相同的結構體,把值大的保留,找不到的就新增該元素到vector中,實現兩個向量的合併

函式如下:

vectorcombine_vec(vector& v1,vector& v2)

}  else  }

return v1; 

vector存放結構體時排序:

先定義排序函式:

bool sort_by_value(const mydata& data1,const madata& data2 ){

return data1.valuesort(vec.begin(),vec.end(),sort_by_value);

結構體容器vector

最近在做處理資料的問題,本來想建立乙個結構體,裡面存放兩個陣列,在乙個main函式裡進行了設計,也能成功執行,但是寫成函式呼叫的形式就會出錯,並且這種寫法必須設定陣列的大小。include include using namespace std int main stu for int i 0 i ...

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

今天寫 的是遇到想對vector進行排序的問題,隱約記得std sort函式是可以對vector進行排序的,但是這次需要排序的vector中壓的是自己定義的結構體 元素大於等於2 想以其中某乙個元素進行正序或逆序排序,則不能直接使用sort函式。1.c 中當 vector 中的資料型別為基本型別時,...

C語言結構體和結構體排序

結構體 結構體是一種構造資料型別 構造資料型別包括 陣列型別 結構體型別 共用體型別 定義 把不同的資料組合成乙個整體。結構體的一般形式struct 結構體名稱 struct是關鍵字 不要忘記這裡的分號定義結構體的三種方法 第一種 先定義結構體型別,在定義變數名 struct student str...