GeezerVison is showing cpprefjp.github.io — std::count - cpprefjp C++日本語リファレンス
最終更新日時:
2026年09月11日 13時06分31秒 (JST)
Akira Takahashi
が更新
履歴
編集
function template
<algorithm>
std:: count
namespace std {
template < class InputIterator ,
class T >
typename iterator_traits < InputIterator >:: difference_type
count ( InputIterator first ,
InputIterator last ,
const T & value ); // (1) C++98
template < class InputIterator ,
class T >
constexpr typename iterator_traits < InputIterator >:: difference_type
count ( InputIterator first ,
InputIterator last ,
const T & value ); // (1) C++20
template < class InputIterator ,
class T = typename iterator_traits < InputIterator >:: value_type >
constexpr typename iterator_traits < InputIterator >:: difference_type
count ( InputIterator first ,
InputIterator last ,
const T & value ); // (1) C++26
template < class ExecutionPolicy ,
class ForwardIterator ,
class T >
typename iterator_traits < ForwardIterator >:: difference_type
count ( ExecutionPolicy && exec ,
ForwardIterator first ,
ForwardIterator last ,
const T & value ); // (2) C++17
template < class ExecutionPolicy ,
class ForwardIterator ,
class T = typename iterator_traits < ForwardIterator >:: value_type >
typename iterator_traits < ForwardIterator >:: difference_type
count ( ExecutionPolicy && exec ,
ForwardIterator first ,
ForwardIterator last ,
const T & value ); // (2) C++26
}
概要
イテレータ範囲[first, last)から、指定された値と等値な要素の数を数える。
戻り値
イテレータ範囲[first,last) 内のイテレータ i について、*i == value であるイテレータの数を返す
計算量
正確に last - first 回の比較を行う
備考
(1), (2) :
C++26 : 引数として波カッコ初期化{}を受け付ける
例
基本的な使い方
出力
count of 1: 3
波カッコ初期化を入力として使用する (C++26)
#include <algorithm>
#include <iostream>
#include <vector>
struct Point {
int x ;
int y ;
bool operator == ( const Point & other ) const = default ;
};
int main () {
std::vector < Point > v = {
{ 1 , 2 },
{ 3 , 4 },
{ 5 , 6 },
{ 1 , 2 },
};
// 値が {1, 2} の要素がいくつあるかを数える
int n = std::count ( v.begin() , v.end() , { 1 , 2 });
std::cout << "count of {1,2}: " << n << std::endl ;
}
出力
count of {1,2}: 2
実装例
template < class InputIterator , class T >
typename iterator_traits < InputIterator >:: difference_type
count ( InputIterator first , InputIterator last , const T & value ) {
typename iterator_traits < InputIterator >:: difference_type ret = 0 ;
for ( ; first != last ; ++ first )
if ( value == * first ) ret ++ ;
return ret ;
}
バージョン
言語
処理系
関連項目
参照