C++之谓词

一元谓词
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
//仿函数 返回值类型是boo1数据类型,称为谓词
//一元谓词class GreaterFive
{
public:bool operator()(int val){return val > 5;}
};void test()
{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 << "没有找大于5的数字" << endl;}else{cout << "找到了大于5的数字为:" << *it << endl;}
}int main()
{test();system("pause");return 0;
}

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