1. C++中關於泛型演算法sort()用法的問題C++達人進!
首先實現這個排序有兩種方式,一個自己定義一個返回值為bool的比較函數。
一個是自己定義類中的<操作函數。
第一種方式可以簡單寫為。
bool cmp(node x,node y)
{
return x.key1<b.key1;
}
sort(vec.begin,vec.end.cmp);
這種排序是從小到大的,也就是如果cmp(a,b)為真,則a一定在b的前面,如果
cmp(a,b)和cmp(b,a)都為false.的話,也就是a.key1==b.key1,則他們的先後順序則是不一定的,可能a在b前面,也可能b在a前面。
也就是說這種排序演算法是不穩定的。
第二種方式
struct node{
int key1;
int key2;
book operator <(const node &m)
{
return key1<m.key1;
}
}
這樣就不用自己定義比較函數。
對與sort()排序是不穩定的,正如前面說的,如果需要穩定排序的話,可以使用
stable_sort,它可以保證相等的元素原來的相對次序是不變的。