一、一元谓词
//函数对象(仿函数)返回值为bool类型时,仿函数称为“谓词”
# include <iostream>
# include <vector>
# include <algorithm>
using namespace std;
class compare
{
public:
bool operator ()(int i)//只有一个参数称为“一元谓词”
{
return i>5;
}
};
int main (void)
{
vector<int> v;
for(int i=0;i<20;++i)
{
v.push_back(i);
}
vector<int>::iterator it=find_if(v.begin(),v.end(),compare());//find_if()为algorithm提供的函数
if(it!=v.end())
{
cout<<"Catch it!"<<endl<<*it<<endl;
}
else
{
cout<<"No catch it"<<endl;
}
return 0;
}
二、二元谓词
# include <iostream>
# include <vector>
# include <algorithm>
using namespace std;
class compare
{
public:
bool operator()(int a,int b)//有两个参数,所以称为二元谓词
{
return a>b;
}
};
int main (void)
{
vector<int> v;
v.push_back(30);
v.push_back(20);
v.push_back(40);
v.push_back(10);
v.push_back(50);
sort(v.begin(),v.end());//调用algorithm中的sort()函数
for(vector<int>::iterator it=v.begin();it!=v.end();++it)
{
cout<<*it<<" ";
}
cout<<endl;
cout<<"-----------------------"<<endl;
sort(v.begin(),v.end(),compare());
for(vector<int>::iterator it=v.begin();it!=v.end();++it)
{
cout<<*it<<" ";
}
cout<<endl;
return 0;
}