cSTL中的list容器用sort排序是,如何自定義比較

時間 2021-07-12 17:34:26

1樓:匿名使用者

1、sort函式的原型之一是:

void sort( iterator start, iterator end, comp cmp );

其中cmp可以是自定義的函式,按照您指定的規則用於比較迭代器對應的元素的大小。

那麼這裡的cmp是一個結構體(或者說類)。該類定義了一個呼叫操作符(就是operator()啦),呼叫操作符接受兩個node型別物件為引數,返回一個bool值。

那麼cmp()是什麼呢?它在執行時將建立一個cmp類的臨時物件,使用該臨時物件呼叫operator()來比較兩個node物件的大小。

比如比較node[i]和node[j],那麼cmp()比較它們之間的大小等價於:

cmp ctemp;

temp.operator(node[i], node[j])返回一個bool值。

所以說cmp()等價於一個函式物件。

2、例程:

#include

#include

#include

using namespace std;

bool sort_desc(int a, int b)

bool sort_asc(int a, int b)

void p(int* begin, int* end)

int main()

;sort(a, a + 10, sort_desc);

p(a, a + 10);

sort(a, a + 10, sort_asc);

p(a, a + 10);

sort(a, a + 10, greater());

p(a, a + 10);

sort(a, a + 10, less());

p(a, a + 10);}

如何利用c++/stl vector的sort演算法對元素是自定義型別進行排序

2樓:

自己寫一個比較函式就可以了,作為第三個引數傳到sort函式。

下面有個小例子:

#include

#include

#include

using namespace std;

class aba

};ostream& operator << (ostream& os, const aba& ra)

// 自己寫的比較函式

bool newless(const aba& ra, const aba& rb)

int main()

return 0;

}朋友,請【採納答案】,您的採納是我答題的動力,如果沒有明白,請追問。謝謝。

3樓:

#include

#include

#include

#include //sort函式標頭檔案

using namespace std;

class student

void display() const

};//自定義的比較函式,這裡是對學號進行排序static bool mycompare(const student& a1,const student& a2)

int main()

sort(classone.begin(), classone.end(),mycompare);

cout << "排序後:" << endl;

it = classone.begin();

while (it != classone.end())return 0;}

spring容器中怎麼配置list集合

逝水流炎 jstl標籤庫考慮不?用標籤直接展現。不考慮的話可以寫一個這個input在頁面不會展現,而且後端傳過來的list可以被儲存在裡面。需要的時候通過 id val 獲取到這個list集合。直接在js 裡通過 var woshilist new arraylist woshilist repla...

java 怎麼刪除list中的指定元素

高 婷婷 主要有三種方法 用一個list 記錄要刪除的資料,最後removeall list 用for迴圈遍歷,原始書寫方式 用迭代器自帶的remove方法,這也是官方推薦的方法。 白卡 從list中刪除指定元素可以使用remove方法來實現 arraylist al new arraylist a...

電容器用於交流能有充電放電的過程能提高功率因數。在直流(如電熱電容)中能如此嗎

電容器用於交流能有充電放電的過程能提高功率因數。在直流中因為直流電沒有功率因數這個說法,因此不成立。建議選擇可變電容器,功率大小可調,可以根據實際需要進行設定。可變電容器是一種電容量可以在一定範圍內調節的電容器,通過改變極片間相對的有效面積或片間距離改變時,它的電容量就相應地變化。當需要手動或自動調...