C++ STLのcount_if()関数とは?使い方と実行例をわかりやすく解説
本記事では、C++ STLにおけるstd::count_if()関数の仕組み、構文、そして具体的な使用例について詳しく解説します。
std::count_if()とは?
std::count_if()は、C++ STLに標準で用意されている関数で、<algorithm>ヘッダーファイル内で定義されています。この関数は、指定された範囲内の要素のうち、特定の条件を満たす要素の個数を取得するために使用されます。戻り値は整数型で、条件を満たした要素の総数が返されます。
この関数は、単に範囲内を反復処理するだけでなく、各要素に対して条件式が真であるかを順番に評価し、条件が真になった回数をカウントして結果として返します。
構文
count_if(start, end, condition);
パラメータ
この関数は、以下のパラメータを受け取ります。
- start / end(開始・終了イテレータ) − 関数を適用する対象範囲を指定します。startは範囲の先頭位置を、endは範囲の終端位置を示します。
- condition(条件) − 各要素に対してチェックしたい条件です。単項関数(引数を1つだけ受け取る関数)として定義し、指定範囲内のすべての要素に適用されます。
戻り値
この関数は、与えられた条件を満たす要素の個数(整数値)を返します。
使用例:偶数のカウント
入力例
bool iseve(int i){ return ((i%2)==0); }
int a = count_if( vect.begin(), vect.end(), iseve ); /* vectには1〜10の整数が格納されている */
出力結果
even numbers = 2 4 6 8 10
この例では、1〜10の整数が格納されたベクターvectから、偶数(2, 4, 6, 8, 10)を判定する関数iseveを条件として渡し、条件を満たす要素をカウントしています。
サンプルコード:奇数の個数を数える
#include <bits/stdc++.h>
using namespace std;
bool check_odd(int i){
if (i % 2 != 0)
return true;
else
return false;
}
int main() {
vector<int> vec;
for (int i = 0; i < 10; i++){
vec.push_back(i);
}
int total_odd = count_if(vec.begin(), vec.end(), check_odd);
cout<<"Number of odd is: "<<total_odd;
return 0;
}
出力結果
Number of odd is: 5
このコードでは、0〜9の整数をベクターvecに格納し、奇数かどうかを判定するcheck_odd関数を条件として渡しています。0〜9の中で奇数は「1, 3, 5, 7, 9」の5個であるため、出力は「5」となります。
補足:ラムダ式を使った書き方
C++11以降では、ラムダ式を使うことで条件を簡潔に記述できます。
int cnt = count_if(vec.begin(), vec.end(), [](int i){ return i % 2 == 0; });
このように書けば、別途判定用の関数を定義する必要がなく、コードをより読みやすくコンパクトにできます。
-
C++ STLのcosh()関数とは?双曲線余弦の求め方をサンプルコード付きで解説
cosh()関数とは? C++のSTLに組み込まれているcosh()関数は、ラジアン単位で与えられた角度の双曲線余弦(ハイパボリック・コサイン)を計算して返す関数です。使用するには、<cmath>ヘッダーをインクルードする必要があります。 双曲線余弦は、数学的に次の式で定義されます。 cosh(x) = (e^x + e^(-x)) / 2 構文 cosh()関数の構文は以下の通りです。 cosh(var) 構文から分かるように、cosh()関数はfloat型、double型、long double型のいずれかの引数varを受け取ります。そして、その双曲線余弦を返します。なお、引
-
C++ STLのsinh()関数の使い方を徹底解説
sinh()関数とはsinh()関数は、ラジアンで指定された値の双曲線正弦(ハイパボリックサイン)を返す関数です。C++のSTL(標準テンプレートライブラリ)に組み込まれており、<cmath>ヘッダをインクルードすることで利用できます。双曲線正弦は、以下の数式で定義されます。sinh(x) = (e^x − e^−x) / 2sinh()関数の構文sinh()関数の構文は以下のとおりです。sinh(var)構文からわかるように、sinh()関数はfloat型、double型、long double型のいずれかのパラメータvarを受け取ります。戻り値は、varの双曲線正弦です。sin