C++ Standard Library C++ STL Library

C++ <algorithm> - replace_copy() Function



The C++ algorithm::replace_copy function is used to copy all elements in the range [first, last) to the range starting at result, with all values equal to old_value replaced by new_value.

Syntax

template <class InputIterator, class OutputIterator, class T>
  OutputIterator replace_copy (InputIterator first, 
                               InputIterator last,
                               OutputIterator result,
                               const T& old_value, 
                               const T& new_value);

Parameters

first Specify initial position of the input iterator. The range used is [first,last).
last Specify final position of the input iterator. The range used is [first,last).
result Specify initial position of the output iterator where the result to be stored.
old_value Specify the value to be replaced.
new_value Specify the value to replaced with.

Return Value

Returns an iterator pointing to the element that follows the last element replaced in result sequence.

Time Complexity

Linear i.e, Θ(n).

Example:

In the example below, the algorithm::replace_copy function is used to copy all elements of an array to a vector, with all elements equal to 5 replaced by 9.

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
 
int main (){
  int arr[] = {10, 5, 38, 5, 5, 78};
  vector<int> vec(6);
  vector<int>::iterator it;

  //copy elements from array to vector and 
  //replace all 5 with 9 in the vector vec
  replace_copy(arr, arr+6, vec.begin(), 5, 9);

  cout<<"arr contains:";
  for(int i = 0; i < 6; ++i)
    cout<<" "<<arr[i];

  cout<<"\nvec contains:";
  for(it = vec.begin(); it != vec.end(); ++it)
    cout<<" "<<*it;

  return 0;
}

The output of the above code will be:

arr contains: 10 5 38 5 5 78
vec contains: 10 9 38 9 9 78

❮ C++ <algorithm> Library