Unary Predicate 一元谓词

C++中谓词(predicate)的概念:

  • 返回bool类型的(仿)函数称为谓词
  • 函数接受一个参数,称为一元谓词
  • 函数接受两个参数,称为二元谓词
  • ...
// 代码拷贝自CSDN
#include 
#include 

using namespace std;

//[method 1]
bool fun1(int a)
{
    if (a < 30) 
        return true;
    else 
        return false;
}
///[method 2]
struct Fun2
{
public:
    bool operator()(int a)
    {
        if (a < 80) 
            return true;
        else 
            return false;
    }
};
///[method 3] 这种方式要求使用c++11,为了集中表达三种方式定义成了全局的,实际可做实参传入
auto fun3 = [](int a) ->bool {
    if (a < 10) 
        return true;
    else 
        return false;
};

int main(int argc, char* argv[])
{
    list l = { 78, 87, 27, 90, 45, 6 };
    cout << "*******使用全局函数**********" << endl;
    auto iterator_ = std::find_if(l.begin(), l.end(), fun1);  // 迭代到满足条件(fun1为ture)的第一个元素;如果找不到此类元素,则返回最后一个。
    cout << (*iterator_) << endl;
    cout << "*******使用重载()**********" << endl;
    auto it2 = std::find_if(l.begin(), l.end(), Fun2());
    cout << (*it2) << endl;
    cout << "*******使用lambda表达式**********" << endl;
    list::iterator it3 = find_if(l.begin(), l.end(), fun3);
    cout << (*it3) << endl;
}

你可能感兴趣的:(Unary Predicate 一元谓词)