码迷,mamicode.com
首页 > 其他好文 > 详细

sort和stable_sort

时间:2019-02-17 12:49:16      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:ret   each   class   iter   turn   dom   fun   ict   template   

sort

//版本一 
template <class RandomAccessIterator>
void sort(RandomAccessIterator first,RandomAccessIterator last);
//版本二 
template <class RandomAccessIterator,class StrictWeakOrdering)
void sort(RandomAccessIterator first,RandomAccessIterator last,StrictWeakOrdering cmp);

stable_sort

//版本一 
template <class RandomAccessIterator>
void stable_sort(RandomAccessIterator first,RandomAccessIterator last);
//版本二 
template <class RandomAccessIterator,class StrictWeakOrdering)
void stable_sort(RandomAccessIterator first,RandomAccessIterator last,StrictWeakOrdering cmp);
  1. stable_sort会保证排序后元素的相对位置不变(把某序列按姓排序,如果姓相同而名不同,则视为等价,此时相对位置不改变,用stable_sort函数),使用merge sort算法
  2. sort不会保证排序后的相对位置相同,因此sort比stable_sort快,使用intersort算法
  3. 每个函数都有两个版本,第一个版本重载operator < ,第二个版本调用自己定义的function object
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

class F
{
    public:
        bool operator()(int i,int j)
        {
            return (i%10)>=(j%10);    
        }    
};
int main()
{
    vector<int> v{2,1,-1,5,6,3};
    sort(v.begin(),v.end(),F());
    for_each(v.begin(),v.end(),[](int i)
    {
        cout<<i<<" ";
    });
    cout<<endl;
    return 0;    
} 

 

sort和stable_sort

标签:ret   each   class   iter   turn   dom   fun   ict   template   

原文地址:https://www.cnblogs.com/tianzeng/p/10390562.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!