常用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; }
相关文章推荐
- stl常用算法_排序相关
- STL常用算法之排序、集合
- STL知识点(常用算法函数介绍 、容器、类属算法、迭代器、函数对象、适配器、分配器
- 数组排序的常用算法
- STL中常用的一些算法函数[持续更新
- STL的常用算法 .
- 常用算法-直接选择排序
- 常用的算法和数据结构分析(查找和排序)
- STL一些常用的容器和算法--总结
- 链表的归并排序:来自STL_ list_ sort 算法
- 算法学习-常用排序
- STL中比较常用的容器是vector,set和map,比较常用的算法有Sort等。
- 数组排序的常用算法
- 常用算法总结之排序(一)----写在前面
- 常用算法——快速排序
- STL的常用算法
- STL 常用 算法/函数
- STL常用算法(转)
- 常用算法总结之排序(三)----改进冒泡
- [算法]常用排序,查找,树算法集锦