この章ではその中の、count_if関数の使い方を解説します。
count_if(v1, v2, judge);という形を取ります。v1,v2はコンテナの反復子でv1からv2の範囲でjudge関数が trueを返す数を返します。
judge関数は自作関数で、名前は何でもよいです。この時judgeを述語関数と呼ぶことがあります。
では、サンプルを見てみましょう。
// cntif.cpp #include <iostream> #include <algorithm> #include <vector> using namespace std; bool judge1(int); bool judge2(int); int main() { vector <int> vt; int i, data, n1, n2; while (1) { cout << "0以外の整数(0で終了)---"; cin >> data; if (data == 0) break; vt.push_back(data); } cout << "入力順に表示" << endl; for (i = 0; i < (int)vt.size(); i++) { cout << "[" << i+1 << "] " << vt[i] << endl; } n1 = (int)count_if(vt.begin(), vt.end(), judge1); cout << "100以上の数は" << n1 << "個あります" << endl; n2 = (int)count_if(vt.begin(), vt.end(), judge2); cout << "100未満の数は" << n2 << "個あります" << endl; return 0; } bool judge1(int x) { return x >= 100; } bool judge2(int x) { return x < 100; }実行結果は次のような感じになります。
Update Jan/02/2005 By Y.Kumei