count
提供:cppreference.com
#include <algorithm> template< class InputIterator, class T > typename iterator_traits<InputIterator>::difference_type count( InputIterator first, InputIterator last, const T &value );
[first, last)の範囲の中で、与えられた値valueと一致する要素の数を返します。
目次 |
[編集] 引数
first, last - 検査される要素の範囲
value - 検索する値
[編集] 返値
valueと等しい要素の数
[編集] 等価関数
template<class InputIterator, class UnaryFunction> typename iterator_traits<InputIterator>::difference_type UnaryFunction count(InputIterator first, InputIterator last, const T &value) { typename iterator_traits<InputIterator>::difference_type ret = 0; for (; first != last; ++first) { if (T == *first) { ret++; } } return ret; }
[編集] 例
以下のコードは、 ベクタの中に目的値と一致する整数がいくつあるか調べるためにcountを使用しています:
#include <algorithm> #include <iostream> #include <vector> int main() { int data[] = { 1, 2, 3, 4, 4, 3, 7, 8, 9, 10 } std::vector<int> v(data, data+10); int target1 = 3; int target2 = 5; int num_items1 = std::count(v.begin(), v.end(), target1); int num_items2 = std::count(v.begin(), v.end(), target2); std::cout << "number: " << target1 << " count: " << num_items1 << std::endl; std::cout << "number: " << target2 << " count: " << num_items2 << std::endl; return 0; }
出力:
number: 3 count: 2 number: 5 count: 0
[編集] 計算量
firstとlastの区間で線形です。