1、 merge
功能描述:
- 两个容器元素合并,并存储到另一容器中
- 两个容器元素必须是有序的,都是同样顺序的,不能一个升序一个降序,而且合并之后的新容器也是有序的
函数原型:
- merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);
// 容器元素合并,并存储到另一容器中
// 注意: 两个容器必须是有序的
// beg1 容器1开始迭代器
// end1 容器1结束迭代器
// beg2 容器2开始迭代器
// end2 容器2结束迭代器
// dest 目标容器开始迭代器
2、reverse
功能描述:
- 将容器内元素进行反转
函数原型:
- reverse(iterator beg, iterator end);
// 反转指定范围的元素
// beg 开始迭代器
// end 结束迭代器
3、示例代码
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>//包含了多种算法
using namespace std;
/*************************************** merge(合并) *********************************/
class print02//函数对象(仿函数)
{
public:
void operator()(int v1)
{
cout << v1 << " ";
}
};
void test01()//把两个容器的数组合并放到一个新容器,前提是:两个容器的元素必须是有序的,才能合并到第三个容器,依然是有序序列
{
vector<int> v;//容器中的元素必须是有序的,可以都是升序或都是降序,两个要合并的容器顺序是一致的,不能一个升序,一个降序
for (int i = 0;i < 10;i++)
{
v.push_back(i);
}
vector<int> v1;//容器中的元素必须是有序的
for (int i = 5;i < 15;i++)
{
v1.push_back(i);
}
/*for (int i = 10;i >0;i--)//错误,不能一个升序一个降序
{
v1.push_back(i);
}*/
vector<int> v2;
v2.resize(v.size() + v1.size());//先要给新容器分配空间
merge(v.begin(), v.end(), v1.begin(), v1.end(), v2.begin());//两个容器合并到一个新容器,依然是一个有序序列
for_each(v2.begin(), v2.end(), print02());//遍历
}
/******************************** reverse 反转******************************/
void test02()
{
vector<int> v;
v.push_back(1);
v.push_back(3);
v.push_back(5);
v.push_back(2);
v.push_back(4);
for_each(v.begin(), v.end(), print02());//反转前
cout << endl;
reverse(v.begin(), v.end());//进行反转
for_each(v.begin(), v.end(), print02());//反转后
}
int main()
{
//test01();//merge合并容器
test02();//reverse反转
return 0;
}