常用STL算法3_排序

来源:互联网 发布:java 判断字符串相等 编辑:程序博客网 时间:2024/05/20 03:40
#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <vector>#include <set>#include <list>#include <algorithm>#include <functional>#include <string>#include <iterator> //输出流#include <time.h>using namespace std;template <typename T>void printElem(T &t){    T::iterator it;    for (it = t.begin(); it != t.end(); it++)    {        cout<<*it<<" ";    }    cout<<endl;}void main081_merge(){    vector<int> vecIntA;    vecIntA.push_back(1);    vecIntA.push_back(3);    vecIntA.push_back(5);    vector<int> vecIntB;    vecIntB.push_back(2);    vecIntB.push_back(4);    vecIntB.push_back(6);    vecIntB.push_back(8);    vector<int> vecIntC;    vecIntC.resize(vecIntA.size()+vecIntB.size());    /*    _OutIt merge(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)    {           // copy merging ranges, both using operator<        _DEBUG_ORDER(_First1, _Last1);        _DEBUG_ORDER(_First2, _Last2);        _DEBUG_POINTER(_Dest);        return (_Merge1(_Unchecked(_First1), _Unchecked(_Last1), _Unchecked(_First2),            _Unchecked(_Last2), _Dest, _Is_checked(_Dest)));    }    */    merge(vecIntA.begin(), vecIntA.end(), vecIntB.begin(), vecIntB.end(), vecIntC.begin());    printElem(vecIntC);}//学生类class CStudent{public:    CStudent(int iID, string strName)    {        m_iID=iID;          m_strName=strName;     }public:    void printElem()    {        cout<<"Name:"<<m_strName<<"  ID:"<<m_iID;    }public:                int m_iID;    string m_strName;};//学号比较函数bool Compare(const CStudent &stuA,const CStudent &stuB){    return (stuA.m_iID<stuB.m_iID);}void main082_sort(){    vector<CStudent> vecStu;    vecStu.push_back(CStudent(2,"老二"));    vecStu.push_back(CStudent(1,"老大"));    vecStu.push_back(CStudent(3,"老三"));    vecStu.push_back(CStudent(4,"老四"));    /*    void sort(_RanIt _First, _RanIt _Last, _Pr _Pred)    {           // order [_First, _Last), using _Pred        _DEBUG_RANGE(_First, _Last);        _DEBUG_POINTER(_Pred);        _Sort(_Unchecked(_First), _Unchecked(_Last), _Last - _First, _Pred);    }    */    sort(vecStu.begin(),vecStu.end(),Compare);    for (vector<CStudent>::iterator it = vecStu.begin(); it != vecStu.end(); it++)    {        it->printElem();        cout<<endl;    }}//random_shuffle:     对指定范围内的元素随机调整次序。void main083_random_shuffle(){    srand((unsigned int)time(0));           //设置随机种子    vector<int> vecInt;    vecInt.push_back(1);    vecInt.push_back(3);    vecInt.push_back(5);    vecInt.push_back(7);    vecInt.push_back(9);    /*    void random_shuffle(_RanIt _First, _RanIt _Last)    {           // shuffle [_First, _Last) using rand()        _Rand_urng_from_func _Func;        _STD shuffle(_First, _Last, _Func);    }    */    random_shuffle(vecInt.begin(), vecInt.end());   //随机排序,结果比如:9,7,1,5,3    printElem(vecInt);    string str("itcastitcast");    random_shuffle(str.begin(), str.end());        //随机排序,结果比如:" itstcasticat "    cout<<str<<endl;}void main084_reverse(){    vector<int> vecInt;    vecInt.push_back(1);    vecInt.push_back(3);    vecInt.push_back(5);    vecInt.push_back(7);    vecInt.push_back(9);    /*    void reverse(_BidIt _First, _BidIt _Last)    {           // reverse elements in [_First, _Last)        _DEBUG_RANGE(_First, _Last);        _Reverse(_Unchecked(_First), _Unchecked(_Last), _Iter_cat(_First));    }    */    reverse(vecInt.begin(), vecInt.end());      //{9,7,5,3,1}    printElem(vecInt);}int main(){    //main081_merge();    //main082_sort();    //main083_random_shuffle();    main084_reverse();     cout<<"\nhello"<<endl;    system("pause");    return 0;}
0 0
原创粉丝点击