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

2021-07-12 17:33:47 字數 1798 閱讀 1431

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;}

E prime中的list的attributes之間可以

可以的,配合簡單的語句以及巢狀下層list就可以了 關於e prime 中的nested 與隨機的關係 你好,nested和你說的隨機抽取沒有直接關係,只是nested的list的exit和reset一定程度上收上層list的影響。隨機方式主要還是看list的selection選擇。另外需要e pr...

在化學用語2SO3中,2SO3的含義是

分子的表示 方法,正抄確書寫物質襲的化學式,表示多個 bai該分子,就在 du其化學式前加上相應的數字,zhi則2so3可表示 dao2個三氧化硫分子.標在分子符號前面的數字表示分子的個數,2so3中的 2 表示三氧化硫分子的個數為2.標在化學式中元素右下角的數字表示一個分子中所含原子的數目,2so...

為什麼在串聯電容器中,每個電容器所帶的電荷量都相等,而且等於

電容器串聯的話,首先是斷路的。嗯,兩個電容器通過導線相連,兩板帶有電性相反,電量相同的電荷所以這兩個電容器所帶的電荷量相等 可能有點詞不達意,要不明白可以追加問題我再解釋吧 為什麼每一個串聯電容的電荷量都相等且等於總電荷量?100 在穩定狀態時,串聯各電容器帶的電荷量是相等的。因為,如果不相等,連線...