C++中的Lambda表达式详解(2)
复制代码 代码如下: #includeiostream using namespace std; typedef enum { add = 0, sub, mul, divi }type; class Calc { public: Calc(int x, int y):m_x(x), m_y(y){} int operator()(type i) { switch
复制代码 代码如下:
#include<iostream>
using namespace std;
typedef enum
{
add = 0,
sub,
mul,
divi
}type;
class Calc
{
public:
Calc(int x, int y):m_x(x), m_y(y){}
int operator()(type i)
{
switch (i)
{
case add:
return m_x + m_y;
case sub:
return m_x - m_y;
case mul:
return m_x * m_y;
case divi:
return m_x / m_y;
}
}
private:
int m_x;
int m_y;
};
int main()
{
Calc addObj(10, 20);
cout<<addObj(add)<<endl; // 发现C++11中,enum类型的使用也变了,更“强”了
return 0;
}
现在我们有了Lambda这个利器,那是不是可以重写上面的实现呢?看代码:
复制代码 代码如下:
#include<iostream>
using namespace std;
typedef enum
{
add = 0,
sub,
mul,
divi
}type;
int main()
{
int a = 10;
int b = 20;
auto func = [=](type i)->int {
switch (i)
{
case add:
return a + b;
case sub:
return a - b;
case mul:
return a * b;
case divi:
return a / b;
}
};
cout<<func(add)<<endl;
}
显而易见的效果,代码简单了,你也少写了一些代码,也去试一试C++中的Lambda表达式吧。
关于Lambda那些奇葩的东西
- 上一篇:C++处理键盘输入的方法
- 下一篇:C++之CWnd窗口框架实例
精彩图集
精彩文章