C++中的谓词(一元谓词 & 二元谓词)

1.概念

    返回bool类型的仿函数称为谓词

    如果operator()接受一个参数,叫做一元谓词。

    如果operator()接受两个参数,叫做二元谓词。

2.一元谓词

#include
#include
#include
using namespace std;

class ValidScore
{
public:
    bool operator()(int val)
    {
        return val >= 60;
    }
};

int main()
{
    vector v = { 20,30,50,70,90 };
    auto iter = find_if(v.begin(), v.end(), ValidScore());
    if (iter == v.end())
    {
        cout << "没有找到及格的分数" << endl;
    }
    else
    {
        cout << "找到及格的分数: " << *iter << endl;
    }

    getchar();
    return 0;
}

3.二元谓词

#include
#include
#include
using namespace std;

class MyCompare
{
public:
    bool operator()(int v1, int v2)
    {
        return v1 > v2;
    }
};

int main()
{
    vector v = { 20,30,70,90,50 };
    sort(v.begin(), v.end(), MyCompare());        //从大到小排列
    for_each(v.begin(), v.end(), [](int val) {
        cout << val << " ";
    });

    getchar();
    return 0;
}

 

你可能感兴趣的:(C++,函数对象,一元谓词,二元谓词)