|
replace_if
function template
<algorithm>
template < class ForwardIterator, class Predicate, class T >
void replace_if ( ForwardIterator first, ForwardIterator last,
Predicate pred, const T& new_value );
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:
1 2 3 4 5 6 7
|
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
// 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) |
|