C11-Lambda表达式速解

本文深入探讨了C++中的Lambda表达式,包括其基本语法、如何定义与调用Lambda函数,以及不同捕获方式(如按值捕获和按引用捕获)对Lambda内部作用域的影响。通过实例演示了Lambda表达式的灵活应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**************************************************************************************
*************************     lambda表达式    *************************
***************************************************************************************/
	/*
	匿名函数:

	基本格式:

	[符号](传入参数)mutable(可选) throwSpec(可选) ->返回值
	{
	}

	符号&代表之前外部作用域的变量用引用传递到lambda表达式的内部作用域中
	=代表值复制传递


	//定义lambda表达式(这样直接整么法调用)因为你调用函数一定得有函数名/函数指针
	[]{
		cout<<"lambda"<<endl;
	}
	[]{
		cout<<"lambda"<<endl;
	}
	//定义lambda表达式,立即执行
	[]{
		cout<<"lambda"<<endl;
	}();
	//定义lambda表达式Call 然后调用
	auto Call=[]{
		cout<<"lambda"<<endl;
	}
	Call();
	*/
int lambdahelloOut = 0;
	SHOW_SMALL_FUNCTION_BLOCK_TIPS("lambda表达式")
		//代表着一种类型
	{
		int lambdahelloIn = 0;
		//定义lambda表达式,立即执行
		[] {
			cout << "lambda" << endl;
		}();
		//定义lambda表达式Call 然后调用
		auto Call = [] {
			cout << "lambda" << endl;
		};
		Call();
		//可以直接写一个=/&代表外部变量都能在lambda中访问
		//也可以直接写变量名或者&+变量名,代表值传递和引用传递
		//=要改值的话必须是mutable

		[=] ()mutable noexcept->int {
			lambdahelloOut = 1;
			lambdahelloIn = 0;
			cout << "lambda=In"<<"  "<<"lambdahelloOut"<< lambdahelloOut << endl;
			return 1;
		}();
		cout << "lambda=Out" << "  " << "lambdahelloOut" << lambdahelloOut << endl;


		[&]() noexcept ->int{
			lambdahelloOut = 1;
			lambdahelloIn = 0;
			cout << "lambda&In" << "  " << "lambdahelloOut" << lambdahelloOut << endl;
			return 1;
		}();
		cout << "lambda&Out" << "  " << "lambdahelloOut" << lambdahelloOut << endl;


		int itest1=1;
		int itest2=2;
		int itest3=3;
		[itest1,&itest3]()mutable noexcept->int {
			//lambdahelloOut = 1;无法访问
			//lambdahelloIn = 0;无法访问
			cout << "lambda[itest1,&itest3]In" << "  "  << endl;
			return 1;
		}();
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值