STL深度梳理之常用算法实现及lambda表达式(C++11/14)

总第38篇

本文要主梳理STLLambda表达式的定制操作及常用的基本算法的实现方式。

1.Lambda表达式的定制

很多算法都会比较输入序列中的元素以达到排序的效果。通过定制比较的动作,就可以主算法按编程者的意图去工作 。这里我们以排序算法来说明。

普通的排序算法只能按照从小到大进行排序,很多时候并不适用。其普通排序算法的代码示例如下:

        template
void sort(RandomIterator first, RandomIterator last){
    if (first >= last || first + 1 == last)
        return;
    if (last - first <= 20)//区间长度小于等于20的采用冒泡排序更快
        return bubble_sort(first, last, pred);
        auto mid = mid3(first, last - 1, pred);
        auto p1 = first, p2 = last - 2;
        while (p1 < p2){
        while (pred(*p1, mid) && (p1 < p2)) ++p1;
               while (!pred(*p2, mid) && (p1 < p2)) --p2;
            if (p1 < p2){
                swap(*p1, *p2);
            }
        }
    swap(*p1, *(last 

你可能感兴趣的:(面向加薪编程C/C++/Qt,算法,数据结构,python,快速排序,java)