C++ Lambda表达式
2021-01-26 07:16
标签:value capture auto img 需要 operator http 根据 直接 语法如下: Lambda可以有参数 Lambda 可以返回某物。但不需要指明返回类型。该类型会根据返回值被推导出来。 如果想指明一个返回类型,可使用新式C++语法。 方括号内,可以指明一个capture用来处理外部作用域内,未被传递为实参的数据 [=]表示外部作用域的以by value的方式传递给lambda。Lambda内修改变量不会改动外部作用域的数据。 [&]表示外部作用域的以by reference的方式传递给lambda。Lambda内修改变量会改动外部作用域的数据。 以上的代码也可以用 [=, &y]取代 [x,&y] mutable的作用: 上述行为可视为: Lambda类型。 Lambda类型是个匿名function object。如果想根据该类型声明对象。可借助template或auto。如果实在需要写下该类型,可使用decltype()。或者使用std::function class template。 C++ Lambda表达式 标签:value capture auto img 需要 operator http 根据 直接 原文地址:https://www.cnblogs.com/xiaoaofengyue/p/12853819.html//直接调用
[]{
cout"hello lambda1"endl;
}();
//传递给对象
auto l=[]{
cout"hello lambda2"endl;
};
l();
auto l2 = [](const string& s){
cout"s: "endl;
};
l2("hello lambda3");
int a = [] {
return 42;
}();
cout"a="endl;
double b = [] () -> double {
return 43;
}();
cout"b="
int x=0,y=42;
auto qqq=[x,&y]{
cout"x: "endl;
cout"y: "endl;
y++;
};
x=y=77;
qqq();
qqq();
cout"final y: "
int id=0;
auto f1=[id]()mutable{
cout"id :"endl;
++id;
};
id=42;
f1();
f1();
f1();
class{
private:
int id;
public:
void operator ()(){
cout"id :"endl;
++id;
}
};
#include
上一篇:JavaScript
下一篇:从输入URL到页面展示的详细过程