1.谓词概念
概念:
返回bool类型的仿函数称为谓词
如果operator()接受一个参数,那么叫作一元谓词
如果operator()接受两个参数,那么叫作二元谓词
2.一元谓词
//仿函数返回值类型是bool数据类型称为谓词//这个就是一元谓词classGreaterFive{public:booloperator()(intval){returnval5;}};voidtest01(){vectorintv;for(inti=0;i10;i++){v.push_back(i);}//查找容器中有没有大于五的容器//GreaterFive()匿名函数对象vectorint::iteratorit=find_if(v.begin(),v.end(),GreaterFive());if(it==v.end()){cout"未找到"endl;}else{cout"未找到"endl;}}intmain(){test01();system("pause");return0;}
2.二元谓词
//此为二元谓词classMyCompare{public:booloperator()(intval1,intval2){returnval1val2;}};voidtest01(){vectorintv;v.push_back(20);v.push_back(40);v.push_back(30);v.push_back(50);v.push_back(10);sort(v.begin(),v.end());//sort是默认的从小到大for(vectorint::iteratorit=v.begin();it!=v.end();it++){cout*itendl;}//使用函数对象改变算法策略变排序规则为从大到小sort(v.begin(),v.end(),MyCompare());}intmain(){test01();system("pause");return0;}