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.