C++11 Lambda表达式

xiaoxiao2021-02-28  105

格式:   [...](...) mutable throwSpec ->retType {....}

1. [...] 表示引入的外部变量 

比如:

int a{0}; int b{1}; auto temp = [a,&b](){std::cout<<a<<std::endl; std::cout<<++b<<std::endl;}; temp(); std::cout<<b<<endl;

如果直接使用[=] 表示引入所有的外部自动变量,以传值方式。 ([&] 以引用方式) 注意:以传值方式传递时,默认情况下在表达式内不能修改变量值。使用mutable关键字后可以

2.(...)表示传递的参数

int a{0}; int b{1}; auto temp = [a,&b](const std::string p_strTemp){std::cout<<a<<std::endl; std::cout<<++b<<std::endl; std::cout<<p_strTemp<<std::endl; }; temp("test"); std::cout<<b<<endl;

3.mutable 关键字

平时用于强制更改为可用的,比如声明一个变量为mutable,在const函数中,也可以修改该变量。

这里作用为:传值引入的变量,可以被修改

int a{ 0 }; int b{ 1 }; auto l_temp =[a, &b] ()mutable {std::cout << ++a << " " << ++b << std::endl; }; l_temp(); 4.throwSpec 异常描述 和平时写法一样 , [a, &b] ()mutable throw(int,std::exception){....}

5.->retType 返回值 也可以不指定

int a{0}; int b{1}; auto temp = [=]->int{return a+b;}; std::cout<<temp()<<endl;

转载请注明原文地址: https://www.6miu.com/read-41008.html

最新回复(0)