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

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
Front Page / Algorithms / Querying Algorithms / count_if

count_if

Synopsis

template<
      typename Sequence
    , typename Pred
    >
struct count_if
{
    typedef unspecified type;
};

Description

Returns the number of elements in Sequence that satisfy the predicate Pred.

Header

#include <boost/mpl/count_if.hpp>

Parameters

Parameter Requirement Description
Sequence Forward Sequence A sequence to be examined.
Pred Unary Lambda Expression A count condition.

Expression semantics

For any Forward Sequence s and unary Lambda Expression pred:

typedef count_if<s,pred>::type n;
Return type:

Integral Constant.

Semantics:

Equivalent to

typedef lambda<pred>::type p;
typedef fold<
      s
    , long_<0>
    , if_< apply_wrap1<p,_2>, next<_1>, _1 >
    >::type n;

Complexity

Linear. Exactly size<s>::value applications of pred.

Example

typedef vector<int,char,long,short,char,long,double,long> types;

BOOST_MPL_ASSERT_RELATION( (count_if< types, is_float<_> >::value), ==, 1 );
BOOST_MPL_ASSERT_RELATION( (count_if< types, is_same<_,char> >::value), ==, 2 );
BOOST_MPL_ASSERT_RELATION( (count_if< types, is_same<_,void> >::value), ==, 0 );

See also

Querying Algorithms, count, find, find_if, contains