码迷,mamicode.com
首页 > 其他好文 > 详细

匿名函数 lambda

时间:2018-11-19 17:21:39      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:使用   cti   参数   定义变量   block   att   vector   get   har   

[ capture_block ]( parameters ) mutable exception_specification attribute_specifier -> return_type { body };

捕捉快(capture_block):

参数(parameters):

可选项:

mutable:

exception_specification:

attribute_specifier:

return_type:

注意点:[捕捉块]、(参数)

格式:

auto basiclambda =[ ] {cout << "Hello from lambda" <<endl;}; basiclambda();

auto parameterslambda =[ ] (int value){cout << "The value is" <<value<<endl;}; parameterslambda(42);

auto returninglambda =[ ] (int a,int b){return a+b}; int sum = returninglambda(11, 22);

double data=1.23; auto capturinglambda = [data] {cout <<"Data ="<< data<<endl;};

const double data=1.23; auto capturinglambda = [data] {cout <<"Data ="<< data<<endl;};

double data=1.23; auto capturinglambda = [data]()mutable {data*=2; cout <<"Data ="<< data<<endl;};

捕捉块:

double data=1.23; auto capturinglambda = [&data] { data*=2; };

 

[]        //未定义变量.试图在Lambda内使用任何外部变量都是错误的.
[x, &y]   //x 按值捕获, y 按引用捕获.
[&]       //用到的任何外部变量都隐式按引用捕获
[=]       //用到的任何外部变量都隐式按值捕获
[&, x]    //x显式地按值捕获. 其它变量按引用捕获
[=, &z]   //z按引用捕获. 其它变量按值捕获
[this] //捕捉周围的对象。即使没有使用this->,也可以在lambda表达式体中访问这个对象;、

 

泛型lambda表达式

auto isGreaterThan100 = [ ](auto i){ return i >100;);

auto it1 = find_if(cbegin(ints), cend(ints), isGreaterThan100);

if (it1 != cend(ints)){

cout << "Found a value >100:" <<*it1 <<end1;}

lambda捕捉表达式

double pi =3.1415;

auto mylambda =[ myCapture = "pi: ",pi]{std ::cout<<myCapture<<pi;);

将lambda表达式作为参数:

void testCallback(const vector<int>& vec, const function<bool(int)>& callback)
{
for (const auto& i : vec){
if (!callback(i)){
break;
}
cout << i << "";
}
cout << endl;
}
int main(){
vector<int> vec{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
testCallback(vec, [](int i){return i < 6; });
getchar();
}

匿名函数 lambda

标签:使用   cti   参数   定义变量   block   att   vector   get   har   

原文地址:https://www.cnblogs.com/wllwqdeai/p/9983727.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!