std::count(一致する要素数を取得)
std::countとは?
- 指定した要素と一致する要素の個数を調べる関数。
- 一致する要素なので、"偶数"や"5以上の数"などの指定の仕方は不可。
- 参照:count - cpprefjp C++日本語リファレンス
- 引数、返り値を以下に示す。
第一引数 | 配列の先頭イテレータ |
---|---|
第二引数 | 配列の末尾イテレータ |
第三引数 | 値n |
返り値 | nと一致する要素数 |
std::countの使用例:vector内の「2」の個数を調べる
ソースコード
#include <algorithm> #include <iostream> #include <vector> int main() { std::vector<int> v = { 2, 3, 4, 6, 2, 7 }; // v内の「2」の個数を調べる int count = std::count( v.begin(), v.end(), 2 ); std::cout << "2の個数: " << count << std::endl; }
実行結果
偶数の要素数: 3
std::count_if
std::count_ifとは?
- 指定した条件を満たす要素の個数を取得する関数。
- countと異なり「偶数」などのように条件を満たす要素数を取得できます。
- 参考サイト:count_if - cpprefjp C++日本語リファレンス
- 引数、返り値を以下に示す。
第一引数 | 配列の先頭イテレータ |
---|---|
第二引数 | 配列の末尾イテレータ |
第三引数 | 条件式(ラムダ式) |
返り値 | 条件式を満たす要素数 |
使用例1:偶数の個数を取得
ソースコード
#include <algorithm> #include <iostream> #include <vector> int main() { std::vector<int> v = { 2, 3, 4, 6, 7}; // 「a」を含む文字が何個あるか調査 auto count = std::count_if( v.begin(), v.end(), [](int a) { return (a % 2 == 0); } ); std::cout << "偶数の要素数: " << count << std::endl; }
実行結果
偶数の要素数: 3
使用例2:「a」を含む文字列の数を取得
ソースコード
#include <algorithm> #include <iostream> #include <vector> int main() { std::vector<std::string> v = { "and", "on", "at", "between", "of" }; // 「a」を含む文字が何個あるか調査 auto count = std::count_if( v.begin(), v.end(), [](std::string s) { return (s.find('a')!=std::string::npos); } ); std::cout << "「a」を含む文字の数: " << count << std::endl; }
実行結果
「a」を含む文字の数: 2