• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.. Algorithms/Querying Algorithms//count_if |50
2
3count_if
4========
5
6Synopsis
7--------
8
9.. parsed-literal::
10
11    template<
12          typename Sequence
13        , typename Pred
14        >
15    struct count_if
16    {
17        typedef |unspecified| type;
18    };
19
20
21
22Description
23-----------
24
25Returns the number of elements in ``Sequence`` that satisfy the predicate ``Pred``.
26
27
28Header
29------
30
31.. parsed-literal::
32
33    #include <boost/mpl/count_if.hpp>
34
35
36
37Parameters
38----------
39
40+---------------+-------------------------------+-----------------------------------+
41| Parameter     | Requirement                   | Description                       |
42+===============+===============================+===================================+
43| ``Sequence``  | |Forward Sequence|            | A sequence to be examined.        |
44+---------------+-------------------------------+-----------------------------------+
45| ``Pred``      | Unary |Lambda Expression|     | A count condition.                |
46+---------------+-------------------------------+-----------------------------------+
47
48
49Expression semantics
50--------------------
51
52
53For any |Forward Sequence| ``s`` and unary |Lambda Expression| ``pred``:
54
55.. parsed-literal::
56
57    typedef count_if<s,pred>::type n;
58
59:Return type:
60    |Integral Constant|.
61
62:Semantics:
63    Equivalent to
64
65    .. parsed-literal::
66
67        typedef lambda<pred>::type p;
68        typedef fold<
69              s
70            , long_<0>
71            , if_< apply_wrap\ ``1``\<p,_2>, next<_1>, _1 >
72            >::type n;
73
74
75Complexity
76----------
77
78Linear. Exactly ``size<s>::value`` applications of ``pred``.
79
80
81Example
82-------
83
84.. parsed-literal::
85
86    typedef vector<int,char,long,short,char,long,double,long> types;
87
88    BOOST_MPL_ASSERT_RELATION( (count_if< types, is_float<_> >::value), ==, 1 );
89    BOOST_MPL_ASSERT_RELATION( (count_if< types, is_same<_,char> >::value), ==, 2 );
90    BOOST_MPL_ASSERT_RELATION( (count_if< types, is_same<_,void> >::value), ==, 0 );
91
92
93See also
94--------
95
96|Querying Algorithms|, |count|, |find|, |find_if|, |contains|
97
98
99.. copyright:: Copyright �  2001-2009 Aleksey Gurtovoy and David Abrahams
100   Distributed under the Boost Software License, Version 1.0. (See accompanying
101   file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
102