📅  最后修改于: 2023-12-03 15:13:55.347000             🧑  作者: Mango
在C++的STL中,algorithm是最常用的类之一,其中有一个很有用的函数replace_copy()可以用来将一个序列中的某个元素替换成另一个元素,同时返回一个新的序列。
template <class InputIterator, class OutputIterator, class T>
OutputIterator replace_copy (InputIterator first, InputIterator last, OutputIterator result, const T& old_value, const T& new_value);
函数接受五个参数,分别为:
replace_copy()函数的功能是将[first, last)区间内的值与old_value进行比较,如果相等则用new_value替换并将结果存储在[result, result + (last - first))区间内,返回值为新序列的迭代器result + (last - first)。
下面是一个使用replace_copy()函数的示例代码:
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
std::vector<int> vec_new(vec.size());
std::replace_copy(vec.begin(), vec.end(), vec_new.begin(), 3, 6);
for (auto i : vec_new) {
std::cout << i << " ";
}
return 0;
}
输出结果为:
1 2 6 4 5
在上述代码中,首先定义了一个存储整数型变量的vector向量,然后定义了一个新的vector向量vec_new,用来存储replace_copy()函数的返回值。接着调用replace_copy()函数,将vec中的所有3替换成6,并将新的序列存储在vec_new中,最后输出替换后的序列。