1.一元谓词
1.定义
2.案例
查找容器有没有大于五的数字
#include<stdio.h>
using namespace std;
#include<string>
#include<vector>
#include<set>
#include <iostream>
class myfind
{
public:
bool operator()(int a)
{
return a > 5;
}
};
int main()
{
vector<int>v;
v.push_back(3);
v.push_back(4);
v.push_back(7);
vector<int>::iterator it = find_if(v.begin(), v.end(), myfind());
if (it == v.end())
{
cout << "没找到" << endl;
}
else
{
cout << *it << endl;
}
return 0;
}
其中
cout << *find_if(v.begin(), v.end(), myfind()) << endl;
中的myfind()是创建了一个匿名函数对象
2.二元谓词
1.案例
利用自定义排序规则使sort系统算法进行降序排序
#include<stdio.h>
using namespace std;
#include<string>
#include<vector>
#include<set>
#include<algorithm>
#include <iostream>
class myfind
{
public:
bool operator()(int a,int b)
{
return a > b;
}
};
int main()
{
vector<int>v;
v.push_back(1);
v.push_back(4);
v.push_back(2);
v.push_back(3);
v.push_back(5);
sort(v.begin(), v.end(), myfind());
for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it << endl;
}
return 0;
}