C++stl predicate concept

Predicate concept

concept:

A functor that returns a bool type is called a predicate

If operator() accepts a parameter, it is called a unary predicate

If operator() accepts two parameters, it is called a binary predicate

Unary predicate

Code example:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
//仿函数  返回值类型是bool数据类型,称为谓词
//一元谓词
class GreaterFive
{
    
    
public:
       bool operator()(int val)
       {
    
    
              return val > 5;
       }
};
void test01()
{
    
    
       vector<int>v;
       for (int i = 0; i < 10; i++)
       {
    
    
              v.push_back(i);
       }
       //查找容器中  有没有大于5的数字
       //GreaterFive()匿名函数对象
       vector<int>::iterator it = find_if(v.begin(), v.end(), GreaterFive());
       if (it == v.end())
       {
    
    
              cout << "未找到" << endl;
       }
       else
       {
    
    
              cout << "找到了大于5的数字为:" << *it << endl;
       }
}
int main()
{
    
    
       test01();
       system("pause");
       return 0;
}

Summary: The parameter has only one predicate, called a unary predicate

Example of binary predicate code:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
//二元谓词
class MyCompare
{
    
    
public:
       bool operator()(int val1, int val2)
       {
    
    
              return val1 > val2;
       }
};
void test01()
{
    
    
       vector<int>v;
       v.push_back(10);
       v.push_back(40);
       v.push_back(20);
       v.push_back(30);
       v.push_back(50);
       sort(v.begin(), v.end());
       for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
       {
    
    
              cout << *it << " ";
       }
       cout << endl;
       //使用函数对象,改变算法策略,变为排序规则为从大到小
       sort(v.begin(), v.end(), MyCompare());
       cout << "-----------------------------" << endl;
       for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
       {
    
    
              cout << *it << " ";
       }
       cout << endl;
}
int main()
{
    
    
       test01();
       system("pause");
       return 0;
}

Summary: A predicate with only two parameters is called a binary predicate

Guess you like

Origin blog.csdn.net/gyqailxj/article/details/115076958
Recommended