cc23b_demo函数对象c++ 调用操作符的重载与函数对象//用模板定义一元谓词、代码示范

//用模板定义一元谓词、

 1 #include <iostream>
 2 #include <vector>
 3 #include <algorithm>
 4 
 5 using namespace std;
 6 //用模板定义一元谓词、
 7 
 8 template<typename numberType>
 9 struct IsMultiple
10 {
11     numberType m_Divisor;
12     IsMultiple(const numberType& divisor)
13     {
14         m_Divisor = divisor;
15     }
16     //bool operator()(const mumberType& element) const
17     //严重性    代码    说明    项目    文件    行    禁止显示状态
18         //错误    C4430    缺少类型说明符 - 假定为 int。注意 : C++ 不支持默认 int    cc23b_demo    d : \users\tt2018\documents\visual studio 2015\projects\cc23b_demo\cc23b_demo\cc23b_demo.cpp    16
19     //numberType写成了mumberType
20 
21     bool operator()(const numberType& element) const//一元谓词
22     {
23         return((element%m_Divisor) == 0);
24     }
25 
26 };
27 int main()
28 {
29     vector<int> vecIntegers;
30     for (int i = 25; i < 100; ++i)
31         vecIntegers.push_back(i);
32     //算法-写法1
33     //IsMultiple<int> a(4);
34     //vector<int>::iterator iElement;//迭代器是个指针
35     //iElement=find_if(vecIntegers.begin(), vecIntegers.end(), a);
36 
37     //写法2,省一个变量
38     
39     vector<int>::iterator iElement;//迭代器是个指针
40     iElement = find_if(vecIntegers.begin(), vecIntegers.end(), IsMultiple<int> (4));//IsMultiple<int> (4),省一个变量
41     //
42     if (iElement != vecIntegers.end())
43     {
44         cout << "第一个4的整数倍的数是: " << *iElement << endl;////迭代器是个指针
45     }
46     
47     //a(4);
48     cout << "hello1" << endl;
49     getchar();
50     return 0;
51 }
欢迎讨论,相互学习。 txwtech@163.com
原文地址:https://www.cnblogs.com/txwtech/p/12108659.html