(十六)functional 与 lambda [](){}

这次写的仍然是函数,只不过这次会讲一种用于存储函数的库functional与一种新的函数lambda

functional

其实标题已经讲了库名

#include <functional>

定义

这个库是用于存储函数的库,定义方法类似于后期定义STL容器的方法

function<Typ(List)> Funal = Funct; //定义一个函数变量,并执行Funct的操作,List中填的是原函数参数列表

Typ中还可以填auto这个关键字,表示现在不确定类型,但必须在定义后赋值! 如果你在DEV中执行失败,就点这里的蓝色字体

#include <iostream>
#include <functional>
using namespace std; 
void f(int& a, int& b) {
	int t = a; 
	a = b; 
	b = t; 
}
int main() {
    function<void> swap = f; //让swap代替f执行函数
	int a=60, b=80; 
	swap(a, b); 
	cout << a << ' ' << b << endl; 
	return 0; 
}

lambda函数

lambda函数也被称为匿名函数,它和普通函数最大的区别是一个有函数名,一个没有函数名,其次是一个必须在main函数外定义,一个可以在所有函数里面定义。它的具体定义操作是这样的

[Sig](Lst) {//Sig待会说,可以选择不填;Lst是参数列表
	...... //执行代码
	return Val; //返回Val
}(Cho); //这里可以省略;Cho表示填写的参数

Sig中的具体填写方法

  1. []:不捕获所有变量
  2. [Var]:使用值传递的方式捕获变量Var(函数中的值与外值不同步)
  3. [&Var]:使用引用传递的方式捕获变量Var(函数内的值与外值同步)
  4. [=]:使用值传递的方式捕获所有外部变量(父变量)
  5. [&]:使用引用传递的方式捕获所有外部变量(父变量)

lambda与functional的混合

我们可以在原本代码(点我)Funct中填入lambda函数,就像这样

#include <iostream>
#include <functional>
using namespace std;
int main() {
	function<void(int& a, int& b)> swap = [](int& a, int& b) {
		int t = a; 
		a = b; 
		b = t; 
		return ; 
	}; 
	int a = 60, b = 80; 
	swap(a, b); 
	cout << a << ' ' << b; 
	return 0; 
}

重要的事情说三遍!点赞!点赞!点赞!!
请添加图片描述

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值