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

[編集] 計算量

firstlastの区間で線形です。

[編集] 関連トピック

count_if

個人用ツール
名前空間
変種
操作
案内
ツールボックス
他の言語