flyfish
Lambda 表达式也又称为 lambda,就像匿名函数,一个没有函数名字,只有函数体建立windows控制台应用程序
函数式写法
#include "stdafx.h"
#include <iostream>
int fun(int x, int y)
{
return x + y;
}
int _tmain(int argc, _TCHAR* argv[])
{
std::wcout<<fun(1,2)<<std::endl;
return 0;
}#include "stdafx.h"
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
auto var= [](int x, int y) { return x + y; };
std::wcout<<var(1,2)<<std::endl;
return 0;
}#include <iostream>
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int a = 3;
auto var = [a] (int x, int y){ return a + x + y; };
std::wcout <<var(10,20) << std::endl;
}输出33#include <iostream>
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int a = 3;
auto var = [&a] (int x, int y){ return a + x + y; };
a = 4;
std::wcout <<var(10,20) << std::endl;
}
输出34, 通过引用捕获 a,当a被重新赋值时就会影响该表达式的结果
3 捕获this指针,访问类的成员变量
#include "stdafx.h"
#include <algorithm>
#include <iostream>
#include <vector>
class CCalc
{
public:
explicit CCalc(int nFactor)
: m_nFactor(nFactor)
{
}
void fun(const std::vector<int>& v) const
{
std::for_each(v.begin(), v.end(),
[this](int n) { std::wcout << n * m_nFactor << std::endl; });
}
private:
int m_nFactor;
};
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<int> v;
v.push_back(1);
v.push_back(2);
CCalc o(10);
o.fun(v);
}输出10,20原文地址:http://blog.csdn.net/flyfish1986/article/details/39961969