📜  C++ STL-algorithm.replace_copy()函数(1)

📅  最后修改于: 2023-12-03 15:13:55.347000             🧑  作者: Mango

C++ STL-algorithm.replace_copy()函数介绍

在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);

函数接受五个参数,分别为:

  • first, last:表示需要被替换的源序列范围,其为一对迭代器。
  • result:表示存储替换结果的目标序列的起始位置。
  • old_value:表示需要被替换的元素。
  • 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中,最后输出替换后的序列。

注意事项
  • replace_copy()函数不会改变原序列的值,而是产生一个新的序列进行操作。
  • 新序列的内存空间需要提前分配。