.. Algorithms/Querying Algorithms//count_if |50 count_if ======== Synopsis -------- .. parsed-literal:: 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 ------ .. parsed-literal:: #include 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``: .. parsed-literal:: typedef count_if::type n; :Return type: |Integral Constant|. :Semantics: Equivalent to .. parsed-literal:: typedef lambda::type p; typedef fold< s , long_<0> , if_< apply_wrap\ ``1``\, next<_1>, _1 > >::type n; Complexity ---------- Linear. Exactly ``size::value`` applications of ``pred``. Example ------- .. parsed-literal:: typedef vector 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|