![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/226130c5a495201b504e8f26e8281c05.png)
将[First, Last]区间中的元素复制到_Dest为起点的目标区,同时将其中与_oldval相等的所有元素替换为_Newval
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/806068ef6eeeff1f8ab4f273104c3ca6.png)
将[First, Last]区间中的元素复制到_Dest为起点的目标区,同时将其中令_Pred(elem)结果为true的所有元素替换为_Val
都返回目标区间中最后一个被复制元素的下一个位置
复杂度:线性,执行比较动作numElems次
使用例子:
template<typename T>
inline void INSERT_ELEMENTS(T& coll, int first, int last)
{
for (int i = first; i <= last; ++i)
{
coll.insert(coll.end(), i);
}
}
template<typename T>
inline void PRINT_ELEMENTS(const T & coll, const string& optcstr = "")
{
cout << optcstr;
for (auto elem : coll)
{
cout << elem << ' ';
}
cout << endl;
}
int main()
{
list<int>a;
INSERT_ELEMENTS(a, 2, 6);
INSERT_ELEMENTS(a, 4, 9);
PRINT_ELEMENTS(a);
replace_copy(a.cbegin(), a.cend(), ostream_iterator<int>(cout, " "), 5, 55);
cout << endl;
replace_copy_if(a.cbegin(), a.cend(), ostream_iterator<int>(cout, " "), bind(less<int>(), _1, 5), 42);
cout << endl;
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/410f5dc9d0e004b34143af7523a9f4bc.png)