一元谓词
#include"math.h"
#include"iostream"
#include"string"
#include"vector"
#include"algorithm"
using namespace std ;
// 谓词,什么是谓词?
// 仿函数返回bool类型,叫做谓词
class GeterFive{
public:
//
bool operator()(int num)
{
if(num==5)
{
return true;
}
else
{
return false;
}
}
};
int main()
{
vector<int> v;
v.reserve(100);
for(int i=0;i<10;i++)
{
v.push_back(i);
}
cout<<*find_if(v.begin(),v.end(),GeterFive());
return 0;
}
二元谓词
#include"math.h"
#include"iostream"
#include"string"
#include"vector"
#include"algorithm"
using namespace std ;
class CompareOrder{
public:
// 二元谓词
bool operator()(int num1,int num2)
{
if(num1>num2)
{
return true;
}
else
{
return false;
}
}
};
int main()
{
vector<int> v;
v.reserve(100);
for(int i=0;i<10;i++)
{
v.push_back(i);
}
// 使用函数对象改变sort的排序规则
sort(v.begin(),v.end(),CompareOrder());
for(vector<int>::iterator it = v.begin();it!=v.end();it++)
{
cout<<*it<<'\t';
}
return 0;
}
对类的操作
#include"math.h"
#include"iostream"
#include"string"
#include"vector"
#include"algorithm"
using namespace std ;
class Person{
public:
int age;
double wage;
};
class CompareOrder{
public:
// 二元谓词
bool operator()(Person &num1,Person &num2)
{
if(num1.age>num2.age)
{
return true;
}
else
{
return false;
}
}
};
int main()
{
vector<Person> v;
v.reserve(100);
for(int i=0;i<10;i++)
{
Person p;
p.age=i;
p.wage=i+234;
v.push_back(p);
}
sort(v.begin(),v.end(),CompareOrder());
for(vector<Person>::iterator it = v.begin();it!=v.end();it++)
{
cout<<"age"<<it->age<<" wage::"<<it->wage<<'\t';
}
return 0;
}