replace_if
template<
typename Sequence
, typename Pred
, typename NewType
>
struct replace_if
{
typedef unspecified type;
};
Performs a conditional replacement operation on the sequence. The algorithm returns a new sequence which contains all the elements from [begin<Sequence>::type, end<Sequence>::type) range where every type that satisfies the predicate Pred has been replaced with a NewType. The result sequence preserves all the functional and performance characteristics of the original Sequence, including its size, but not identity.
#include "boost/mpl/replace_if.hpp"
| Parameter | Requirement | Description |
|---|---|---|
Sequence | A model of Extensible Sequence | The original sequence. |
Pred | An unary Predicate [Lambda Expression] | The replacement condition. |
NewType | A type | A type to replace with. |
| Expression | Expression type | Precondition | Semantics | Postcondition |
|---|---|---|---|---|
typedef replace_if<Sequence,Pred,NewType>::type s; | A model of Extensible Sequence | Equivalent to typedef lambda<Pred>::type pred; typedef transform< Sequence, if_< apply1<pred,_1>,NewType,_1> >::type t;. |
Linear. Performs exactly size<Sequence>::type::value applications of Pred, and at most size<Sequence>::type::value insertions.
typedef list_c<int,1,4,5,2,7,5,3,5>::type numbers; typedef replace_if< numbers, greater<_,4>, int_c<0> >::type result; typedef list_c<int,1,4,0,2,0,0,3,0>::type answer; BOOST_STATIC_ASSERT((equal< answer,result,equal_to<_,_> >::type::value));
Algorithms, replace, transform