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.
該函式使用 operator==
將單個元素與 val 進行比較。
此函式模板的行為等同於
1 2 3 4 5 6 7 8 9 10 11
|
template <class InputIterator, class T>
typename iterator_traits<InputIterator>::difference_type
count (InputIterator first, InputIterator last, const T& val)
{
typename iterator_traits<InputIterator>::difference_type ret = 0;
while (first!=last) {
if (*first == val) ++ret;
++first;
}
return ret;
}
|
引數
- 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).
返回值
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.
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
// count algorithm example
#include <iostream> // std::cout
#include <algorithm> // std::count
#include <vector> // 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<int> myvector (myints, myints+8);
mycount = std::count (myvector.begin(), myvector.end(), 20);
std::cout << "20 appears " << mycount << " times.\n";
return 0;
}
|
輸出
10 appears 3 times.
20 appears 3 times.
|
複雜度
Linear in the distance between first and last: Compares once each element.
資料競爭
範圍 [first,last)
中的物件將被訪問(每個物件恰好訪問一次)。
異常
如果元素比較或迭代器操作引發異常,則丟擲。
請注意,無效引數會導致未定義行為。
另見
- for_each
- 將函式應用於範圍 (函式模板)
- count_if
- Return number of elements in range satisfying condition (function template)
- find
- 在範圍中查詢值 (函式模板)
- replace
- 替換範圍中的值 (函式模板)