function template
<algorithm>

std::count

template <class InputIterator, class T>
typename iterator_traits<InputIterator>::difference_type
count (InputIterator first, InputIterator last, const T& val);
Count appearances of value in range
Returns the number of elements in the range [first,last) that compare equal to val.

The function uses operator== to compare the individual elements to val.

The behavior of this function template is equivalent to:
 1234567891011 template typename iterator_traits::difference_type count (InputIterator first, InputIterator last, const T& val) { typename iterator_traits::difference_type ret = 0; while (first!=last) { if (*first == val) ++ret; ++first; } return ret; }

Parameters

first, last
Input iterators to the initial and final positions of the sequence of elements. The range used is [first,last), which contains all the elements between first and last, including the element pointed by first but not the element pointed by last.
val
Value to match.
T shall be a type supporting comparisons with the elements pointed by InputIterator using operator== (with the elements as left-hand side operands, and val as right-hand side).

Return value

The number of elements in the range [first,last) that compare equal to val.
The return type (iterator_traits<InputIterator>::difference_type) is a signed integral type.

Example

 123456789101112131415161718 // count algorithm example #include // std::cout #include // std::count #include // std::vector int main () { // counting elements in array: int myints[] = {10,20,30,30,20,10,10,20}; // 8 elements int mycount = std::count (myints, myints+8, 10); std::cout << "10 appears " << mycount << " times.\n"; // counting elements in container: std::vector myvector (myints, myints+8); mycount = std::count (myvector.begin(), myvector.end(), 20); std::cout << "20 appears " << mycount << " times.\n"; return 0; }

Output:
 10 appears 3 times. 20 appears 3 times.

Complexity

Linear in the distance between first and last: Compares once each element.

Data races

The objects in the range [first,last) are accessed (each object is accessed exactly once).

Exceptions

Throws if either an element comparison or an operation on an iterator throws.
Note that invalid arguments cause undefined behavior.