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 / Sequences / Views / filter_view

filter_view

Synopsis

template<
      typename Sequence
    , typename Pred
    >
struct filter_view
{
    // unspecified
    // ...
};

Description

A view into a subset of Sequence's elements satisfying the predicate Pred.

Header

#include <boost/mpl/filter_view.hpp>

Model of

Parameters

Parameter Requirement Description
Sequence Forward Sequence A sequence to wrap.
Pred Unary Lambda Expression A filtering predicate.

Expression semantics

Semantics of an expression is defined only where it differs from, or is not defined in Forward Sequence.

In the following table, v is an instance of filter_view, s is an arbitrary Forward Sequence, pred is an unary Lambda Expression.

Expression Semantics
filter_view<s,pred>
filter_view<s,pred>::type
A lazy Forward Sequence sequence of all the elements in the range [begin<s>::type, end<s>::type) that satisfy the predicate pred.
size<v>::type The size of v; size<v>::value == count_if<s,pred>::value; linear complexity; see Forward Sequence.

Example

Find the largest floating type in a sequence.

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

BOOST_MPL_ASSERT(( is_same< deref<iter::base>::type, long double > ));

See also

Sequences, Views, transform_view, joint_view, zip_view, iterator_range