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

时间:2025-04-27 08:22:40

1.概念

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

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

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

2.一元谓词

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

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

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

    getchar();
    return 0;
}

3.二元谓词

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

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

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

    getchar();
    return 0;
}