第88章 count_ifアルゴリズム関数を使う


STLでは、「アルゴリズム」と呼ばれるテンプレート関数を使うことができます。 アルゴリズムを使うにはalgorithmをインクルードします。



この章ではその中の、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;
}
実行結果は次のような感じになります。




[C++Index] [総合Index] [Previous Chapter] [Next Chapter]

Update Jan/02/2005 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。