STL之谓词

摘要:本文主要介绍了谓词的相关内容,并且用简单的代码对其进行了应用。

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 }

猜你喜欢

转载自www.cnblogs.com/lzy820260594/p/11399129.html
今日推荐