std::replace, std::replace_if

From Cppreference

Jump to: navigation, search
Defined in header <algorithm>

template< class ForwardIterator, class T >

void replace( ForwardIterator first, ForwardIterator last,

              const T& old_value, const T& new_value );
(1)
template< class ForwardIterator, class UnaryPredicate, class T >

void replace_if( ForwardIterator first, ForwardIterator last,

                 UnaryPredicate p, const T& new_value );
(2)

Replaces all elements satisfying specific criteria with new_value in the range [first, last). The first version replaces the elements that are equal to old_value, the second version replaces elements for which predicate p returns true.

Contents

Parameters

first, last - the range of elements to process
old_value - the value of elements to replace
p - unary predicate which returns ​true if the element value should be replaced.

The signature of the predicate function should be equivalent to the following:

bool pred(const Type &a);

The signature does not need to have const &, but the function must not modify the objects passed to it.
The type ​Type​ must be such that an object of type ​ForwardIterator​ can be dereferenced and then implicitly converted to ​Type​. ​

new_value - the value to use as replacement

Return value

(none)

Complexity

linear in the distance between first and last

Equivalent function

First version:
template<class ForwardIterator, class T>
void replace(ForwardIterator first, ForwardIterator last,
             const T& old_value, const T& new_value)
{
    for (; first != last; ++first) {
        if (*first == old_value) {
            *first = new_value;
        }
    }
}
Second version:
template<class ForwardIterator, class UnaryPredicate, class T>
void replace_if(ForwardIterator first, ForwardIterator last,
                UnaryPredicate p, const T& new_value)
{
    for (; first != last; ++first) {
        if(p(*first)) {
            *first = new_value;
        }
    }
}

Example

See also

replace_copy
replace_copy_if
copies a range, replacing elements satisfying specific criteria with another value
(function template)
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox
In other languages