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

Click here to view the latest version of this page.
Front Page / Sequences / Views / transform_view

transform_view

Synopsis

template<
      typename Sequence
    , typename F
    >
struct transform_view
{
    // unspecified
    // ...
};

Description

A view the full range of Sequence's transformed elements.

Header

#include <boost/mpl/transform_view.hpp>

Model of

Parameters

Parameter Requirement Description
Sequence Forward Sequence A sequence to wrap.
F Unary Lambda Expression A transformation.

Expression semantics

The semantics of an expression are defined only where they differ from, or are not defined in Forward Sequence.

In the following table, v is an instance of transform_view, s is an arbitrary Forward Sequence, and f is an unary Lambda Expression.

Expression Semantics
transform_view<s,f>
transform_view<s,f>::type
A lazy Forward Sequence such that for each i in the range [begin<v>::type, end<v>::type) and each j in for in the range [begin<s>::type, end<s>::type) deref<i>::type is identical to apply< f, deref<j>::type >::type.
size<v>::type The size of v; size<v>::value == size<s>::value; linear complexity; see Forward Sequence.

Example

Find the largest type in a sequence.

typedef vector<int,long,char,char[50],double> types;
typedef max_element<
      transform_view< types, size_of<_> >
    >::type iter;

BOOST_MPL_ASSERT_RELATION( deref<iter>::type::value, ==, 50 );

See also

Sequences, Views, filter_view, joint_view, zip_view, iterator_range