一:介绍
常用的STL拷贝替换算法包括copy,replace,replace_if,swap。
二:copy:指定范围元素拷贝到另一个容器
1.函数原型
copy(iterator begin, iterator end, iterator begin2)
2.操作
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
vector<int> v{ 1,5,3,7,9 };
vector<int> v2;
v2.resize(v.size());
copy(v.begin(), v.end(), v2.begin());
}
三:replace:指定范围元素替换为新元素
1.函数原型
replace(iterator begin, iterator end, oldVal, newVal)
2.操作
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
vector<int> v{ 1,5,3,7,9 };
replace(v.begin(), v.end(), 1, 2);//1替换为2
}
四:replace_if:指定范围满足条件的元素替换为新元素
1.函数原型
replace_if(iterator begin, iterator end, _Pred, newVal)
2.操作
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool ReplaceFunc1(int m)
{
return m > 10;
}
bool ReplaceFunc2(int m)
{
return m < 10;
}
int main()
{
vector<int> v{ 1,5,3,7,9 };
replace_if(v.begin(), v.end(), ReplaceFunc1, 7);//1,5,3,7,9
replace_if(v.begin(), v.end(), ReplaceFunc2, 7);//7,7,7,7,7
}
五:swap:交换两个容器的元素
1.函数原型
swap(T1,T2)
2.操作
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
vector<int> v{ 1,5,3,7,9 };
vector<int> v2;
swap(v, v2);//不只交互元素,交互内存空间,v.size()为0
}