在c++中,對結構體的排序方式比c語言豐富的多。在c語言中,我們主要是通過qsort進行排序操作(拋開手寫排序演算法不說)。
在c++中,有乙個十分強大的排序函式sort,他的內部綜合了許多種排序演算法,因此非常高效。並且,用它來對結構體排序也十分方便。
先貼一段示例**:
1 #include 2 #include 3 #include 4 #include 5 #include 6using
namespace
std;
7struct
mi13
bool
operator
< (const mi &a)const
//對應less,代表公升序,改變下行符號方向反之
1417
bool
operator > (const mi &a)const
//對應greater,代表降序、、、改變下行符號方向反之
1821
};22
bool cmp(const mi &a,const mi &b)
25int
main()
34//
sort(vec.begin(),vec.end());
//公升序排序
35//
sort(vec.begin(),vec.end(),cmp);
//公升序排序
36//
sort(vec.begin(),vec.end(),less());
//公升序排序
37 sort(vec.begin(),vec.end(),greater());//
降序排序
38int wei = 0
;;39
for(vector::iterator it = vec.begin();it!=vec.end();it++)
42return0;
43 }
**中利用注釋進行了簡單的註解。
另外需要注意的一點是sort中的cmp函式與qsort中的cmp函式區別。
sort cmp 是bool型別的,意味著只有0,1兩個返回值,而qsort中還包括0的情況,所以qsort一般是a-b,而sort一般是a
C語言結構體和結構體排序
結構體 結構體是一種構造資料型別 構造資料型別包括 陣列型別 結構體型別 共用體型別 定義 把不同的資料組合成乙個整體。結構體的一般形式struct 結構體名稱 struct是關鍵字 不要忘記這裡的分號定義結構體的三種方法 第一種 先定義結構體型別,在定義變數名 struct student str...
C 結構體陣列排序
c 中的結構體排序,最常用到的應該就是對結構體的某乙個元素進行排序,其他元素與被排序元素關聯 比如這樣的結構體 typedef struct studentstudent score 3 代表三門成績,0 math,1 chinese,2 english typedef struct student...
結構體及結構體排序
1 定義的方法struct node 用strut定義乙個結構體,node是結構體的名字,可以自己瞎取。p 1000 這樣你就定義了乙個神奇的陣列!沒錯,它就是node型陣列!上面的 還在結構體的末尾定義了乙個該型的陣列,其實這個陣列不一定要有,而且也可以在主函式中定義,但是感覺上用的比較多,而且這...