目录
●sort
●random_shuffle
● merge
●reverse
●sort
1.功能描述:
对容器内元素进行排序
2.查看sort定义下底层代码的函数原型:
3.向vector容器中插入10个无序数,并且用sort排序法对其进行升序和降序(内建仿函数greater<数据类型>())的排序。
#include<iostream>
#include<vector>
#include<algorithm> //算法头文件
#include<functional> //内建仿函数头文件
using namespace std;
void printvector(int value)
{
cout << value << " ";
}
void text()
{
vector<int>v;
int n;
cout << "请向vector容器中插入10个无序数:";
for (int i = 1; i <= 10; i++)
{
cin >> n;
v.push_back(n);
}
cout << "sort的升序排序" << endl;
sort(v.begin(),v.end());
for_each(v.begin(), v.end(),printvector);
cout << endl;
cout << "sort的降序排序" << endl;
sort(v.begin(), v.end(), greater<int>());
for_each(v.begin(),v.end(),printvector);
}
int main()
{
text();
}
●random_shuffle
1.功能描述:
对指定范围内的元素去随机调整顺序
2.查看random_shuffle定义下底层代码的函数原型:
3.向vector容器中插入10个顺序数,用rand_shuffle洗牌算法将这10个顺序数打乱输出。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void printvector(int value)
{
cout << value << " ";
}
void text()
{
vector<int>v;
int n;
cout << "请向vector容器中插入10个顺序数:";
for (int i = 1; i <= 10; i++)
{
cin >> n;
v.push_back(n);
}
cout << "输出这10个顺序数:";
for_each(v.begin(),v.end(),printvector);
cout << endl;
cout << "输出调整乱序后的10个数:";
random_shuffle(v.begin(), v.end());
for_each(v.begin(), v.end(), printvector);
cout << endl;
}
int main()
{
text();
}
● merge
1.功能描述:
两个有序容器的合并,并且存储到另一指定容器中,合并后指定容器中的序列也是有序的
2.查看merge定义下底层代码的函数原型:
3.向v1容器中插入1~10,v2容器中插入11~20。将两容器使用merge算法合并到指定容器v中并输出。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void printvector(int value)
{
cout << value << " ";
}
void text()
{
vector<int>v1;
vector<int>v2;
for (int k = 1,i=1,j=11; k <= 10; k++,i++,j++)
{
v1.push_back(i);
v2.push_back(j);
}
//1 2 3 4 5 6 7 8 9 10 [v1]
//11 12 13 14 15 16 17 18 19 20 [v2]
cout << "输出v1容器:";
for_each(v1.begin(), v1.end(), printvector);
cout << endl;
cout << "输出v2容器:";
for_each(v2.begin(), v2.end(), printvector);
cout << endl;
cout << "两容器合并后,指定容器v为:" << endl;
vector<int>v; //指定容器
v.resize(v1.size()+v2.size()); //给指定容器一个空间大小
merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v.begin());
for_each(v.begin(), v.end(), printvector);
}
int main()
{
text();
}
●reverse
1.功能描述:
将容器内元素进行反转
2.查看reverse定义下底层代码的函数原型:
3.使用reverse算法去反转v1容器中1~9到v2容器中并输出。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void printvector(int value)
{
cout << value << " ";
}
void text()
{
vector<int>v;
for (int i = 1; i <= 10; i++)
{
v.push_back(i);
}
cout << "反转前:" << endl;
for_each(v.begin(),v.end(),printvector);
cout << endl;
cout << "反转后:" << endl;
reverse(v.begin(), v.end());
for_each(v.begin(), v.end(), printvector);
}
int main()
{
text();
}