## count_if
## Prototype
template <class InputIterator, class Predicate> iterator_traits<InputIterator>::difference_type count_if(InputIterator first, InputIterator last, Predicate pred); template <class InputIterator, class Predicate, class Size> void count_if(InputIterator first, InputIterator last, Predicate pred, Size& n); ## Description
The second version of Both interfaces are currently supported [1], for reasons of backward compatibility, but eventually the older version will be removed. ## DefinitionDefined in the standard header algorithm, and in the nonstandard backward-compatibility header algo.h. ## Requirements on typesFor the first version, which takes three arguments: -
`InputIterator` is a model of InputIterator. -
`Predicate` is a model of Predicate. -
`InputIterator` 's value type is convertible to`Predicate` 's argument type.
For the second version, which takes four arguments: -
`InputIterator` is a model of InputIterator. -
`Predicate` is a model of Predicate. -
`Size` is an integral type that can hold values of`InputIterator` 's distance type. -
`InputIterator` 's value type is convertible to`Predicate` 's argument type.
## PreconditionsFor the first version: -
`[first, last)` is a valid range.
For the second version: -
`[first, last)` is a valid range. -
`n` plus the number of elements that satisfy`pred` does not exceed the maximum value of type`Size` .
## ComplexityLinear. Exactly ## Exampleint main() { int A[] = { 2, 0, 4, 6, 0, 3, 1, -7 }; const int N = sizeof(A) / sizeof(int); cout << "Number of even elements: " << count_if(A, A + N, compose1(bind2nd(equal_to<int>(), 0), bind2nd(modulus<int>(), 2))) << endl; } ## Notes[1] The new ## See also |