Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Front Page / Algorithms / Runtime Algorithms / for_each

for_each

Synopsis

template<
      typename Sequence
    , typename F
    >
void for_each( F f );

template<
      typename Sequence
    , typename TransformOp
    , typename F
    >
void for_each( F f );

Description

for_each is a family of overloaded function templates:

Header

#include <boost/mpl/for_each.hpp>

Parameters

Parameter Requirement Description
Sequence Forward Sequence A sequence to iterate.
TransformOp Lambda Expression A transformation.
f An unary function object A runtime operation to apply.

Expression semantics

For any Forward Sequence s, Lambda Expression op , and an unary function object f:

for_each<s>( f );
Return type:

void

Postcondition:

Equivalent to

typedef begin<Sequence>::type i1;
value_initialized< deref<i1>::type > x1;
f(boost::get(x1));

typedef next<i1>::type i2;
value_initialized< deref<i2>::type > x2;
f(boost::get(x2));
...
value_initialized< deref<in>::type > xn;
f(boost::get(xn));
typedef next<in>::type last;

where n == size<s>::value and last is identical to end<s>::type; no effect if empty<s>::value == true.

for_each<s,op>( f );
Return type:

void

Postcondition:

Equivalent to

for_each< transform_view<s,op> >( f );

Complexity

Linear. Exactly size<s>::value applications of op and f.

Example

struct value_printer
{
    template< typename U > void operator()(U x)
    {
        std::cout << x << '\n';
    }
};

int main()
{
    for_each< range_c<int,0,10> >( value_printer() );
}

See also

Runtime Algorithms, Views, transform_view