C++ STL中常用的排序算法 20180331 day17
2018-03-31 14:45
405 查看
#include<iostream> using namespace std; #include<vector> #include"functional" #include"algorithm" #include<set> #include<string> #include<list> #include<stack> //merge算法 前提是 合并两个有序的序列 void main61() { vector<int> v1; vector<int> v2; vector<int> v3; v1.push_back(1); v1.push_back(4); v1.push_back(7); v2.push_back(2); v2.push_back(5); v2.push_back(10); v3.resize(10); merge(v1.begin(),v1.end(),v2.begin(), v2.end(),v3.begin()); for (vector<int>::iterator it = v3.begin(); it != v3.end(); it++) { cout << *it << " "; } } class Teacher { public: Teacher(int age); ~Teacher(); public: int m_age; }; Teacher::Teacher(int age) { this->m_age = age; } Teacher::~Teacher() { } struct fllowAge{ bool operator()(const Teacher &left, const Teacher &right) { if (left.m_age > right.m_age) { return true; } else { return false; } } }; //sort算法 实现自定义数据类型的排序 void main62() { Teacher t1(10); Teacher t2(40); Teacher t3(20); Teacher t4(100); Teacher t5(50); vector<Teacher> m_vt; m_vt.push_back(t1); m_vt.push_back(t2); m_vt.push_back(t3); m_vt.push_back(t4); m_vt.push_back(t5); //sort 根据自定义的函数对象的排序 //实现了算法和数据类型的分离 通过函数对象来实现 sort(m_vt.begin(), m_vt.end(), fllowAge()); for (vector<Teacher>::iterator it = m_vt.begin(); it != m_vt.end(); it++) { cout << (*it).m_age << " "; } } // random_shuffle() 随机洗牌 算法 打乱基础数据类型顺序 void main63() { vector<int> v1; v1.push_back(1); v1.push_back(4); v1.push_back(5); v1.push_back(6); v1.push_back(7); v1.push_back(8); for (vector<int>::iterator it = v1.begin(); it != v1.end(); it++) { cout << *it << " "; } cout << endl; random_shuffle(v1.begin(), v1.end()); for (vector<int>::iterator it1 = v1.begin(); it1 != v1.end(); it1++) { cout << *it1 << " "; } cout << endl; //同是可以实现对于string数据类型的顺序打乱 string str = "hellocjlu"; random_shuffle(str.begin(), str.end()); cout << str << endl; //栈操作复习 stack<int> m_stk; m_stk.push(2); m_stk.push(1); m_stk.push(5); m_stk.push(6); while (!m_stk.empty()) { cout << m_stk.top() << " "; m_stk.pop(); } } //reverse() 算法 倒序 将容器中的元素倒序 void main64() { vector<int> v1; v1.push_back(1); v1.push_back(4); v1.push_back(5); v1.push_back(6); v1.push_back(7); v1.push_back(8); for (vector<int>::iterator it = v1.begin(); it != v1.end(); it++) { cout << *it << " "; } cout << endl; reverse(v1.begin(), v1.end()); for (vector<int>::iterator it1 = v1.begin(); it1 != v1.end(); it1++) { cout << *it1 << " "; } cout << endl; } int main() { // main61(); //merge算法 //main62(); //sort算法 //main63(); // random_shuffle() 算法 打乱基础数据类型顺序 main64(); //reverse() 算法 倒序 system("pause"); return 0; }
相关文章推荐
- C++ STL 常用排序算法
- c++标准模板库STL【快速查找】【最全】【常用】【语法】
- C++ STL模板库常用操作
- 常用排序算法的C++实现
- C++ STL常用容器基本用法汇总
- C++基础笔记之六:几种常用排序算法的比较
- C++:STL常用函数模块总结(set)
- 【C++】STL常用容器:string类
- C++:STL常用函数模块总结(vector)
- 【C++】STL常用容器总结之一:容器与迭代器
- 【转载】C++与C#对常用数据结构封装的对比(STL vs System.Collections.Generic)
- C++ STL之map常用指令
- C++STL中Vector常用函数
- C++常用的STL
- C++中STL常用算法概要
- C++ STL 常用遍历算法
- C++中常用的STL 函数
- C++中STL常用容器的区别
- C++与C#对常用数据结构封装的对比(STL vs System.Collections.Generic)
- 常用排序算法C++实现(堆排序,快速排序,归并排序,基数排序)