一、概念
①返回bool类型的仿函数称为谓词。
②如果operator()接受一个参数,那么叫做一元谓词。
③如果operator()接受两个参数,那么叫做二元谓词。
一元谓词
#include <iostream>
#include <string>
#include <vector>
#include<deque>
#include<stack>
#include<list>
#include<set>
#include<map>
#include <algorithm>
using namespace std;
class my_find
{
public:
bool operator()(int val) {
return val > 5;
}
};
void test()
{
vector<int> a;
for (int i = 0; i < 10; i++) {
a.push_back(i);
}
//find_if按条件查找
vector<int>::iterator it = find_if(a.begin(), a.end(), my_find());
if (it == a.end())
{
cout << "未找到" << endl;
}
else {
cout << "找到了" << endl;
}
}
int main()
{
test();
system("pause");
return 0;
}
二元谓词
#include <iostream>
#include <string>
#include <vector>
#include<deque>
#include<stack>
#include<list>
#include<set>
#include<map>
#include <algorithm>
using namespace std;
class my_compare
{
public:
bool operator()(int a, int b) {
return a > b;
}
};
void test()
{
vector<int>a;
a.push_back(10);
a.push_back(30);
a.push_back(5);
a.push_back(6);
a.push_back(45);
sort(a.begin(), a.end(), my_compare());
for (vector<int>::iterator it = a.begin(); it != a.end(); it++) {
cout << *it << endl;
}
}
int main()
{
test();
system("pause");
return 0;
}