STL_算法_对全部元素排序(sort、stable_sort)

C++ Primer 学习中。

?

简单记录下我的学习过程?(代码为主)

//大部分容器适用、不适用于list容器
sort(b,e)
sort(b,e,p)
stable_sort(b,e)
stable_sort(b,e,p)


/**------http://blog.csdn.net/u010579068------**/
#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<list>
#include<deque>
#include<algorithm>
using namespace std;

/*****************************************
//大部分容器适用、不适用于list容器
sort(b,e)
sort(b,e,p)
stable_sort(b,e)
stable_sort(b,e,p)
*****************************************/
/**----------------------------------------------------------------------------------
注意:不适用于list容器,list有成员函数sort()
----------------------------------------------------------------------------------**/
/*************************************************************************************
std::sort                     全部排序容器适用                           algorithm
--------------------------------------------------------------------------------------
template <class RandomAccessIterator>
  void sort ( RandomAccessIterator first, RandomAccessIterator last );

template <class RandomAccessIterator, class Compare>
  void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );
//eg:

*************************************************************************************/

/*************************************************************************************
std::stable_sort                     全部排序容器适用                       algorithm
--------------------------------------------------------------------------------------
template <class RandomAccessIterator>
  void stable_sort ( RandomAccessIterator first, RandomAccessIterator last );

template <class RandomAccessIterator, class Compare>
  void stable_sort ( RandomAccessIterator first, RandomAccessIterator last,
                     Compare comp );
//eg:

*************************************************************************************/

bool myfunction (int i,int j)
{
    return (i<j);
}

struct myclass
{
    bool operator() (int i,int j)
    {
        return (i<j);
    }
} myobject;
bool compare_as_ints (double i,double j)
{
    return (int(i)<int(j));
}

int main ()
{
    int myints[] = {32,71,12,45,26,80,53,33};
    vector<int> myvector (myints, myints+8);               // 32 71 12 45 26 80 53 33
    vector<int>::iterator it;

    // using default comparison (operator <):
    sort (myvector.begin(), myvector.begin()+4);           //(12 32 45 71)26 80 53 33

    // using function as comp
    sort (myvector.begin()+4, myvector.end(), myfunction); // 12 32 45 71(26 33 53 80)

    // using object as comp
    sort (myvector.begin(), myvector.end(), myobject);     //(12 26 32 33 45 53 71 80)

    // print out content:
    cout << "myvector contains:";
    for (it=myvector.begin(); it!=myvector.end(); ++it)
        cout << " " << *it;

    cout << endl;
    /**---------------------------------------------------------------------------------------**/

    double mydoubles[] = {3.14, 1.41, 2.72, 4.67, 1.73, 1.32, 1.62, 2.58};

    deque<double> mydeque;
    deque<double>::iterator id;

    mydeque.assign(mydoubles,mydoubles+8);

    cout << "using default comparison:";
    stable_sort (mydeque.begin(), mydeque.end());
    for (id=mydeque.begin(); id!=mydeque.end(); ++id)
        cout << " " << *id;

    mydeque.assign(mydoubles,mydoubles+8);

    cout << "\nusing ‘compare_as_ints‘ :";
    stable_sort (mydeque.begin(), mydeque.end(), compare_as_ints);
    for (id=mydeque.begin(); id!=mydeque.end(); ++id)
        cout << " " << *id;

    cout << endl;

    return 0;
}

myvector contains: 12 26 32 33 45 53 71 80
using default comparison: 1.32 1.41 1.62 1.73 2.58 2.72 3.14 4.67
using ‘compare_as_ints‘ : 1.41 1.73 1.32 1.62 2.72 2.58 3.14 4.67


原文地址:https://www.cnblogs.com/zhchoutai/p/8452077.html

时间: 2024-10-16 00:52:55

STL_算法_对全部元素排序(sort、stable_sort)的相关文章

STL_算法(21)_ STL_算法_填充新值

STL_算法_填充新值 fill(b, e, v) fill(b, n, v) generate(b, n, p) generate_n(b, n, p) #include<iostream> #include<algorithm> #include<vector> #include<list> // #include<string> using namespace std; int main() { list<string> sli

STL_算法_依据第n个元素排序(nth_element)

C++ Primer 学习中... 简单记录下我的学习过程 (代码为主) //全部容器适用 nth_element(b,n,e) nth_element(b,n,e,p) 对照:partition()算法 /**------http://blog.csdn.net/u010579068------**/ #include<iostream> #include<cstdio> #include<string> #include<vector> #include

STL_算法_局部排序(partial_sort、partial_sort_copy)

C++ Primer 学习中... 简单记录下我的学习过程 (代码为主) /***************************************** // partial_sort(b,se,e) partial_sort(b,se,e,p) partial_sort_copy(sb,se,db,de) partial_sort_copy(sb,se,db,de,p) *****************************************/ /**-------------

STL_算法_元素计数(count、count_if)

C++ Primer 学习中... 简单记录下我的学习过程 (代码为主) count . count_if #include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<set> #include<algorithm> using namespace std; /*********************** count count_if

STL_算法_查找算法(lower_bound、upper_bound、equal_range)

C++ Primer 学习中. .. 简单记录下我的学习过程 (代码为主) //全部容器适用(O(log(n)))    已序区间查找算法 lower_bound()        //找第一个符合的元素,返回位置迭代器 upper_bound()        //找最后一个符合的元素.返回位置迭代器 equal_range()        //找一对迭代器pair(<>,<>) 关联式容器有等效的成员函数.性能更佳 #include<iostream> #incl

STL_算法_交换(swap_ranges)

C++ Primer 学习中... 简单记录下我的学习过程 (代码为主) 所有容器适用 swap_ranges(b,e,b2)  //优点: 可局部交换.可以在不同类型容器间交换 注意:下列两种方法也是交换算法 1.容器的swap()成员函数 2.赋值操作 /**------http://blog.csdn.net/u010579068------**/ #include<iostream> #include<cstdio> #include<string> #incl

STL_算法_删除(unique、unique_copy)

C++ Primer 学习中... 简单记录下我的学习过程 (代码为主) 所有容器适用 unique(b,e) unique(b,e,p) unique_copy(b1,e1,b2) unique_copy(b1,e1,b2,p) 注意: 1.没有unique_if() 2.没有unique_copy_if() /**------http://blog.csdn.net/u010579068------**/ #include<iostream> #include<cstdio>

STL_算法_逆转(reverse,reverse_copy)

C++ Primer 学习中.. . 简单记录下我的学习过程 (代码为主) //全部容器适用 reverse(b,e)        //逆转区间数据 reverse_copy(b,e,b2) /**------http://blog.csdn.net/u010579068------**/ #include<iostream> #include<cstdio> #include<string> #include<vector> #include<li

STL_算法_查找算法(find、find_if)

C++ Primer 学习中. .. 简单记录下我的学习过程 (代码为主) find . find_if /**********************线性查找O(n) find(); find_if(); 注意: 1.假设是已序区间,能够使用区间查找算法 2.关联式容器(set,map)有等效的成员函数find();时间复杂度O(log(n)) 3.string 有等效的成员函数find(); **********************/ #include<iostream> #inclu