zoukankan      html  css  js  c++  java
  • 【STL源码学习】STL算法学习之四

    排序算法是STL算法中相当常用的一个类别,包括部分排序和全部排序算法,依据效率和应用场景进行选择。

    明细:  

    sort

    函数原型:
    template <class RandomAccessIterator>
     void sort (RandomAccessIterator first, RandomAccessIterator last);
    template <class RandomAccessIterator, class Compare>
     void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
    函数作用:
    第一个重载函数就是从小到大的顺序排序。
    第二个重载函数的comp是接受两个参数的函数指针或者函数对象,函数对象是行为类似函数的对象,可以通过comp定义排序方式。
    函数使用:
    comp不应该改变传入参数,否则结果未知
    stable_sort
    函数原型:
    template <class RandomAccessIterator>
     void stable_sort ( RandomAccessIterator first, RandomAccessIterator last );
    template <class RandomAccessIterator, class Compare>
     void stable_sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );
    函数作用:
    基于sort功能,如果两个元素相等,则保留他们排序之前的序列。
    partial_sort
    函数原型:
    template <class RandomAccessIterator>
     void partial_sort (RandomAccessIterator first, RandomAccessIterator middle, RandomAccessIterator last);
    template <class RandomAccessIterator, class Compare>
     void partial_sort (RandomAccessIterator first, RandomAccessIterator middle, RandomAccessIterator last, Compare comp);
    函数作用:
    对[first,last)区间的元素部分排序,比*middle小的元素按照升序排列在前面,比*middle大的元素不做排序复制到区间的后半部分。
    第一个重载用操作符’<’进行比较,第二个重载用comp进行比较。
    partial_sort_copy
    函数原型:
    template <class InputIterator, class RandomAccessIterator>
     RandomAccessIterator
       partial_sort_copy (InputIterator first,InputIterator last, RandomAccessIterator result_first, RandomAccessIterator result_last);
    template <class InputIterator, class RandomAccessIterator, class Compare>
     RandomAccessIterator
       partial_sort_copy (InputIterator first,InputIterator last, RandomAccessIterator result_first, RandomAccessIterator result_last, Compare comp);
    函数作用:
    将[first,last)区间的最小的元素拷贝至result_first-result_last的区间。
    第一个重载用操作符’<’进行比较,第二个重载用comp进行比较。
    函数使用:
    result_first和result_last需要事先指定。
    is_sorted
    函数原型:
    template <class ForwardIterator>
     bool is_sorted (ForwardIterator first, ForwardIterator last);
    template <class ForwardIterator, class Compare>
     bool is_sorted (ForwardIterator first, ForwardIterator last, Compare comp);
    函数作用:
    如果区间元素按照升序进行排列,就返回true,否则返回false。
    第一个重载版本用操作符’<’进行比较,第二个重载版本用comp(通过自定义的comp可以实现降序排列返回true)进行比较。
    is_sorted_until
    函数原型:
    template <class ForwardIterator>
     ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last);
    template <class ForwardIterator>
     ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last, Compare comp);
    函数作用:
    返回一个迭代器,该迭代器指向第一个没有按照升序排列的元素。
    第一个重载版本用操作符’<’进行比较,第二个重载版本用comp(通过自定义的comp可以实现降序排列返回true)进行比较。
    nth_element
    函数原型:
    template <class RandomAccessIterator>
     void nth_element (RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last);
    template <class RandomAccessIterator, class Compare>
     void nth_element (RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last, Compare comp);
    函数作用:
    部分排序函数,排序后的序列具有以下特点:
    1. nth位置上的元素必定是按照序列应该在那里的元素,即升序(默认)的第n个元素。
    2. nth之前的元素都不大于nth位置的元素,nth之后的元素都不小于nth位置的元素。
    重载函数参见其他的排序函数,默认是升序排列,可以指定自己的排序规则。
  • 相关阅读:
    7、cad图纸打印
    对账
    练习10—去掉图片文字
    6、cad里面如何快速将图纸的线条全部变成黑色
    5、cad如何快速选中图纸上所有文字
    4、如何修改cad的背景色为白色
    练习九—快速修饰面部光影
    iOS alloc&init探索
    export default / export const
    Vue2.0+组件库总结
  • 原文地址:https://www.cnblogs.com/learn-my-life/p/3766228.html
Copyright © 2011-2022 走看看