1、函数原型:
-
copy(iterator beg, iterator end, iterator dest);
// 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置
// beg 开始迭代器
// end 结束迭代器
// dest 目标起始迭代器
-
replace(iterator beg, iterator end, oldvalue, newvalue);
// 将区间内旧元素 替换成 新元素
// beg 开始迭代器
// end 结束迭代器
// oldvalue 旧元素
// newvalue 新元素
-
replace_if(iterator beg, iterator end, _pred, newvalue);
// 按条件替换元素,满足条件的替换成指定元素
// beg 开始迭代器
// end 结束迭代器
// _pred 谓词
// newvalue 替换的新元素
-
swap(container c1, container c2);
// 互换两个容器的元素
// c1容器1
// c2容器2
2、示例代码:
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
class print//输出数据的仿函数
{
public:
void operator()(int v1)
{
cout << v1 << " ";
}
};
/***************************************** copy *************************************************/
void test01()//拷贝容器内的元素到另一个容器中,开发中用的比较少
{
vector<int> v;
for (int i = 0; i < 10; i++)
{
v.push_back(i);
}
vector<int>::iterator it = v.begin();
vector<int> v1;
v1.resize(v.size()-1);
copy(++it, v.end(), v1.begin());
for_each(v.begin(), v.end(), print());
cout << endl;
for_each(v1.begin(), v1.end(), print());
}
/***************************************** replace 替换 *************************************************/
void test02()//replace
{
vector<int> v;
v.push_back(2);
v.push_back(4);
v.push_back(6);
v.push_back(8);
v.push_back(4);
v.push_back(6);
for_each(v.begin(), v.end(), print());
replace(v.begin(), v.end(), 6, 100);//将容器中所有的6都替换成100
for_each(v.begin(), v.end(), print());
}
/***************************************** replace_if 条件替换 *************************************************/
class replay//谓词(仿函数)
{
public:
bool operator()(int v)
{
return v >= 6;
}
};
void test03()//replace_if
{
vector<int> v;
v.push_back(2);
v.push_back(4);
v.push_back(6);
v.push_back(8);
v.push_back(4);
v.push_back(6);
for_each(v.begin(), v.end(), print());
replace_if(v.begin(), v.end(), replay(), 100);//将容器中所有的满足条件的数都替换成100
for_each(v.begin(), v.end(), print());
}
/***************************************** swap 互换两个容器的元素 *************************************************/
void test04()
{
vector<int> v;
v.push_back(0);
v.push_back(0);
v.push_back(0);
v.push_back(0);
v.push_back(0);
v.push_back(0);
vector<int> v1;
v1.push_back(1);
v1.push_back(1);
v1.push_back(1);
v1.push_back(1);
v1.push_back(1);
v1.push_back(1);
//交换前遍历
for_each(v.begin(), v.end(), print());
cout << endl;
for_each(v1.begin(), v1.end(), print());
swap(v, v1);//要交换的容器必须是同类型的
cout << endl;
//交换后遍历
for_each(v.begin(), v.end(), print());
cout << endl;
for_each(v1.begin(), v1.end(), print());
}
int main()
{
//test01();//copy
//test02();//replace
//test03();//replace_if
test04();//swap
return 0;
}