Skip to content
Related Articles

Related Articles

Save Article
Improve Article
Save Article
Like Article

std::replace and std::replace_if in C++

  • Last Updated : 28 Oct, 2020

std::replace

Assigns new_value to all the elements in the range [first, last) that compare to old_value. The function use operator == to compare the individual elements to old_value 

Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for foundation plus STL.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

Function Template : 

void replace (ForwardIterator first, 
              ForwardIterator last,
              const T& old_value,
              const T& new_value)
first, last : 
Forward iterators to the initial and final positions
in a sequence of elelments.
old_value : Value to be replaced.
new_value : Replacement value.

Return Value : 
This function do not return any value. If elements that needs to be replace is found then element 
replaced otherwise remain unchanged. 



Examples: 

Input : 10 20 30 30 20 10 10 20 
Output : 10 99 30 30 99 10 10 99 
// Replaced value 20 in vector to 99.

Input : 3 5 7 8 9 5 4 
Output : 3 5 7 12 9 5 4  
// Replaced value 8 by 12.

CPP




// CPP program to find and replace the value
// with another value in array
// using std::replace
#include <bits/stdc++.h>
using namespace std;
 
// Driver code
int main()
{
    int arr[] = { 10, 20, 30, 30, 20, 10, 10, 20 };
    int n = sizeof(arr) / sizeof(arr[0]);
 
    // variable containing the old and new values
    int old_val = 20, new_val = 99;
 
    // print old array
    cout << "Original Array:";
    for (int i = 0; i < n; i++)
        cout << ' ' << arr[i];
    cout << '\n';
 
    // Function used to replace the values
    replace(arr, arr + n, old_val, new_val);
 
    // new array after using std::replace
    cout << "New Array:";
    for (int i = 0; i < n; i++)
        cout << ' ' << arr[i];
    cout << '\n';
 
    return 0;
}
Output
Original Array: 10 20 30 30 20 10 10 20
New Array: 10 99 30 30 99 10 10 99

std::replace_if

Assigns new_value to all the elements in range [first, last) for which pred returns true. 
Function Template :  

void replace_if (ForwardIterator first, ForwardIterator last,
                   UnaryPredicate pred, const T& new_value)
first, last : Forward iterators to the initial and final positions
in a sequence of elelments.
pred : Unary function that accepts an element in the range as argument, and
returns a value convertible to bool.The returned value indicate whether
the element is to be replaced (if true, it is replaced).
The function shall not modify its argument.
old_value : Value to be replaced.
new_value : Replacement value. 

Examples: 

Input : 1 2 3 4 5 6 7 8 9 10  
Output : 0 2 0 4 0 6 0 8 0 10  
// Replaced all odd values to 0.

Input : 10 20 30 30 20 10 10 20 
Output : 10 4 30 30 4 10 10 4  
// Replaced all number divisible by 4 to 4.

CPP




// CPP code to find all the elements that are odd
// and replace them with 0.
// using std::replace_if
#include <bits/stdc++.h>
using namespace std;
 
// Function that is used in std::replace_if
// If number is odd return 1, else 0
// 1 (True) means replace the number
// 0 (False) means does not replace
bool IsOdd(int i)
{
  return ((i % 2) == 1);
}
 
// Driver code
int main()
{
    int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int n = sizeof(arr) / sizeof(arr[0]);
 
    // print old array
    cout << "Original Array:";
    for (int i = 0; i < n; i++)
        cout << ' ' << arr[i];
    cout << '\n';
 
    // replacement value
    int new_val = 0;
 
    // replace_if function
    replace_if(arr, arr + n, IsOdd, new_val);
 
    // new array after using std::replace
    cout << "New Array:";
    for (int i = 0; i < n; i++)
        cout << ' ' << arr[i];
    cout << '\n';
 
    return 0;
}
Output
Original Array: 1 2 3 4 5 6 7 8 9 10
New Array: 0 2 0 4 0 6 0 8 0 10

Also you can add any kind of function in std::replace_if that can only have one argument only.
This article is contributed by Sachin Bisht. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 




My Personal Notes arrow_drop_up
Recommended Articles
Page :