您的位置:首页 > 其它

常用STL算法3_排序

2017-04-24 23:35 441 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  排序