#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include <vector>
#include <algorithm>
using namespace std;class GreaterThen20
{
public:bool operator()(int val){return val > 20;}
};//一元謂詞
void test01()
{vector<int>v;v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(40);v.push_back(50);//查找第一個大于20的數字//第三個參數 函數對象 匿名對象vector<int>::iterator pos = find_if(v.begin(), v.end(), GreaterThen20());if (pos!=v.end()){cout << "找到大于20的數字為:" << *pos << endl;}else{cout << "未找到" << endl;}
}//二元謂詞
class MyCompare
{
public:bool operator()(int v1 ,int v2){return v1 > v2;}
};
void test02()
{vector<int>v;v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(40);v.push_back(50);sort(v.begin(), v.end(), MyCompare());//匿名函數 lambda表達式 [](){};for_each(v.begin(), v.end(), [](int val){ cout << val << " "; });
}int main(){// test01();test02();system("pause");return EXIT_SUCCESS;
}
謂詞是指普通函數或重載的operator()返回值是bool類型的函數對象(仿函數)。如果operator接受一個參數,那么叫做一元謂詞,如果接受兩個參數,那么叫做二元謂詞