天天看點

stable_sort() 和 sort() 的差別

1.stable_sort 和 sort的差別在于 前者作排序可以使原來的"相同"的值在序列中的相對位置不變

如 1 4 6 7 4‘ (4 和 4‘值相等,加上‘ 表示是2個元素)

那麼stable_sort能保證排序完 4 仍然在4‘ 前 也就是輸出1 4 4‘ 6 7;但是sort 沒有這個功能,算法不能保證這一點

2.在标準算法<algorithm>中的一部分算法 如果這個算法預設使用的是 < 運算符,那麼這類算法通常提供一個重載版本,這個重載版本包括3個參數,而不是2個.新增的第三個參數是一個函數指針,這個函數指針指向的函數 就是用來代替預設的 < 運算符的.

也就是說如果容器中的2個元素 ,元素a和元素b,輸入個這個新增的比較函數之後,函數傳回true,那麼a将會放在b前面,lz給的例子裡面這個比較函數能夠用使長度大的排在前面.

同時,使用了stable_sort能夠保證2個長度相同的元素按原順序排列.

繼續閱讀