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;}
關於List容器的問題
listlist假設這個是你的list 先迴圈一遍,把符合這個id的object找到。然後用下面這行,得到這個物件的索引。int i int indexof object 返回此列表中首次出現的指定元素的索引。object beforeobject 1 object afterobject 1 in...
VB中的list控制元件是什麼,VB的List1控制元件所有的使用方法
vb的listbox控制元件是用來顯示專案列表的控制元件。listbox 控制元件,listbox 控制元件顯示專案列表,從其中可以選擇一項或多項。如果專案總數超過了可顯示的專案數,就自動在 listbox 控制元件上新增滾動條。使用 additem 或者 removeitem 方法可以新增或者刪除...
C中Dictionary和list的結合問題
6756,其實沒看懂你在問什麼呢 在c 中,關於list和dictionary的說法,正確的是 ac是正確的 dictionary沒有removeat方法。關於b,能返回定義的資料型別,list是不需要轉換的。b是錯誤的,dictonary中。v是object型別。需要型別轉換 acd是正確的 c ...