| replace_if | function template | 
| template < class ForwardIterator, class Predicate, class T >
  void replace_if ( ForwardIterator first, ForwardIterator last,
                    Predicate pred, const T& new_value ); | <algorithm> | 
Replace values in range
Sets all those elements in the range [first,last) for which pred returns true when applied to its value, to a value of new_value.
The behavior of this function template is equivalent to:
| 
template < class ForwardIterator, class Predicate, class T >
  void replace_if ( ForwardIterator first, ForwardIterator last,
                    Predicate pred, const T& new_value )
{
  for (; first != last; ++first)
    if (pred(*first)) *first=new_value;
}
 | 
Parameters
- first, last
- Forward iterators to the initial and final positions in a sequence. The range used is [first,last), which contains all the elements between first and last, including the element pointed by first but not the element pointed by last.
- pred
- Unary predicate taking an element in the range as argument, and returning a value indicating the falsehood (with false, or a zero value) or truth (true, or non-zero) of some condition applied to it. This can either be a pointer to a function or an object whose class overloads operator().
- new_value
- Value to be set to the affected elements.
Return value
none
Example
| 
// replace_if example
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool IsOdd (int i) { return ((i%2)==1); }
int main () {
  vector<int> myvector;
  vector<int>::iterator it;
  // set some values:
  for (int i=1; i<10; i++) myvector.push_back(i);          // 1 2 3 4 5 6 7 8 9
  
  replace_if (myvector.begin(), myvector.end(), IsOdd, 0); // 0 2 0 4 0 6 0 8 0
  cout << "myvector contains:";
  for (it=myvector.begin(); it!=myvector.end(); ++it)
    cout << " " << *it;
  cout << endl;
 
  return 0;
}
 | 
Output:
| myvector contains: 0 2 0 4 0 6 0 8 0
 | 
Complexity
Applies 
pred as many times as the number of elements in the range 
[first,last).
See also
| replace | Replace value in range (function template) | 
| remove_if | Remove elements from range (function template) | 
| transform | Apply function to range (function template) | 
| for_each | Apply function to range (template function) | 
| find_if | Find element in range (function template) |