lambda函数


格式:[capture] (parameters) mutable ->return-type {statement}
[capture]:捕捉列表
(parameters) : 参数列表,不传参数可以连括号一起省略
mutable :修饰符,默认情况下lambda函数是一个const 函数,反正加上该修饰符时取消其常量行,此时必须加上 参数列表
return-type :返回值类型:可以连->一起省略
{statement} 函数体


lambda函数是基于初始状态进行计算的,而函数是基于参数进行计算的;


捕捉列表的形式:
[=var]以值传递的方式捕捉var
[=]表示以值传递的方式捕捉父作用域的所有自动变量包括this
[&var]表示以引用的方式捕捉var变量
[&]表示以引用的方式捕捉父作用域的所有自动变量包括this

表示以值传递的方式捕捉当前指针this

注:在块作用域中只能捕捉父作用域的自动变量,而不能不做静态变量和非自动变量;
捕捉列表不可重复传递,即:= 和 & 不可以同时使用

测试代码:

 auto func = [] () { std::cout << "hello world"<<endl; };
    func();
    int x =8,y =4;;
    auto fun = [](int x, int y)->int{return x+y;};
    cout<<fun(x,y)<<endl;
    auto fun1 = [x,&y](){return x-y;};
    x= 10;y =1;
    cout<<fun1()<<endl;


仿函数:

核心:重载了   ()    运算符


class function1
{
private:
    int init;
public:
    function1(int init):init(init){}
     int operator()()
    {
        return init*init;
    }

};
int main()
{


    function1 q(2);
    cout<<"x*x = "<<q()<<endl;}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Car12

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值