#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;
}