摘要:本文主要介绍了谓词的相关内容,并且用简单的代码对其进行了应用。
1、基本概念
1.1 什么是谓词?
谓词是指普通函数或重载的operator()返回值是bool类型的函数对象(仿函数)。
1.2 谓词的分类
如果operator接受一个参数,那么叫做一元谓词,如果接受两个参数,那么叫做二元谓词,谓词可作为一个判断式。
2、代码示例
1 #include<iostream> 2 #include <vector> 3 #include<algorithm> 4 5 using namespace std; 6 7 class Over20 { //创建函数对象 8 public: 9 bool operator()(int val) { 10 return val > 20; 11 } 12 }; 13 14 void test01() { 15 vector<int>v; 16 v.push_back(10); 17 v.push_back(20); 18 v.push_back(30); 19 v.push_back(40); 20 21 //查找第一个大于20的数字 22 vector<int>::iterator pos = find_if(v.begin(), v.end(),Over20()); //返回值是一个地址,第三个参数是匿名对象 23 if (pos!=v.end()) 24 { 25 cout << "找到了第一个大于20的数字; " <<*pos<< endl; 26 } 27 else 28 { 29 cout << "未找到" << endl; 30 } 31 } 32 33 //二元谓词 34 class MyCompare 35 { 36 public: 37 bool operator()(int v1, int v2) 38 { 39 return v1 > v2; 40 } 41 }; 42 void test02() 43 { 44 vector<int>v; 45 v.push_back(10); 46 v.push_back(20); 47 v.push_back(30); 48 v.push_back(40); 49 v.push_back(50); 50 51 sort(v.begin(), v.end(), MyCompare()); 52 53 //匿名函数 lambda表达式 [](){}; 54 for_each(v.begin(), v.end(), [](int val) { cout << val << " "; }); 55 } 56 57 58 int main() { 59 //test01(); 60 test02(); 61 system("pause"); 62 return 0; 63 }