算法简介
sort //对容器内元素进行排序
random_shuffle //洗牌 指定范围内的元素随机调整次序
merge //容器元素合并,并存储到另一个容器中
reverse //反转指定范围的元素
一、sort
函数原型
- sort(iterator beg, iterator end, _Pred);
//按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置
//beg 开始迭代器
//end 结束迭代器
//_Pred 谓词
#include <iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<functional>
void myPrint(int val)
{
cout << val << " ";
}
void test01()
{
vector<int> v;
v.push_back(10);
v.push_back(30);
v.push_back(50);
v.push_back(40);
v.push_back(60);
//利用sort进行升序
sort(v.begin(), v.end());
for_each(v.begin(), v.end(), myPrint);
cout << endl;
//改变为降序
sort(v.begin(), v.end(),greater<int>());
for_each(v.begin(), v.end(), myPrint);
cout << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
二、random_shuffle
函数原型
- random_shuffle(iterator beg, iterator end);
//指定范围内的元素随机调整次序
//beg 开始迭代器
//end 结束迭代器
#include <iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<functional>
#include<ctime>
void myPrint(int val)
{
cout << val << " ";
}
void test01()
{
srand((unsigned int)time(NULL)); //随机数种子
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
v.push_back(50);
v.push_back(60);
v.push_back(70);
v.push_back(80);
v.push_back(90);
//利用洗牌算法 打乱顺序
random_shuffle(v.begin(), v.end());
for_each(v.begin(), v.end(), myPrint);
cout << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
三、merge
函数原型
- merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);
//容器元素合并,并存储到另一容器中
//注意:两个容器必须是有序的
//beg1 容器1开始迭代器
//end1 容器1结束迭代器
//beg2 容器2开始迭代器
//end3 容器2结束迭代器
//dest 目标容器开始迭代器
#include <iostream>
using namespace std;
#include<vector>
#include<algorithm>
void myPrint(int val)
{
cout << val << " ";
}
void test01()
{
vector<int> v1;
vector<int> v2;
for (int i = 0; i < 10; i++)
{
v1.push_back(i);
v2.push_back(i + 1);
}
//目标容器
vector<int>vTarget;
vTarget.resize(v1.size() + v2.size()); //先开辟空间
merge(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());
for_each(vTarget.begin(), vTarget.end(), myPrint);
}
int main()
{
test01();
system("pause");
return 0;
}
四、reverse
函数原型
- reverse(piterator beg, iterator end);
//反转指定范围的元素
//beg 开始迭代器
//end 结束迭代器
#include <iostream>
using namespace std;
#include<vector>
#include<algorithm>
void myPrint(int val)
{
cout << val << " ";
}
void test01()
{
vector<int> v;
v.push_back(3);
v.push_back(5);
v.push_back(2);
v.push_back(4);
for_each(v.begin(), v.end(), myPrint);
cout << endl;
//从第2数开始反转,反转后
cout << "从第2数开始反转,反转后:" << endl;
vector<int>::iterator it = v.begin();
reverse(it+1,v.end());
for_each(v.begin(), v.end(), myPrint);
cout << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
本文介绍了C++标准库中的四个重要算法:sort用于排序,random_shuffle用于随机打乱元素顺序,merge用于合并有序容器,reverse则用于反转元素。示例代码详细展示了这些算法的使用方法,帮助读者更好地理解和应用。

被折叠的 条评论
为什么被折叠?



