C++ lambda入门

#include<vector>
#include<stdio.h>
#include<algorithm>
using namespace std;

/*
	lambda表达式:
	[capture](parameters)->return_type {body}
	  -----    --------    ----------   ---
	  捕捉式   传入的参数     返回类型    函数体
	1.捕捉式:lambda的开头,[=],[&]分别表示以值/引用的方式捕获周围的变量
	2.传入的参数:调用时传入的参数(ex:[](int val){}(4) 在函数体内val的值便为4)
	3.body中返回的类型(可省)
*/
void func1() {
	vector<int> v;
	v.push_back(1);
	v.push_back(2);
	printf("---test1------\n");
	for_each(v.begin(), v.end(), [](int val) 
	{
		printf("%d ", val); 
	});
	printf("\n----------\n");
}
void func2() {
	int a = 3;
	int b = 3;
	printf("------test2------\n");
	int c = [a,&b](int val) mutable{         
		a = a + 1;             //error when don't add mutable keyword
		b = b + 1;          
		return a + b + val;         
	}(3);
	printf("a  b  c: %d %d %d", a, b, c);      //res: 3,4,11
	printf("\n----------\n");
}
int main() {
	func1();
	func2();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值