【c++11】 lamda表达式

1.标准样式
[](CString itUrl)->bool {        
        
    }

例子:
不带参数:
auto fun_helloworld = []()->void{
  std::cout << "hello world" << std::endl;
};

fun_helloworld();

带一个参数:
auto fun_helloworld = [](std::string aa)->void{
  std::cout << aa << std::endl;
};

fun_helloworld("hello world");


2.[]中几个值介绍
auto findUrlFun = [=](CString itUrl)->bool {        
        auto itUrlOrigin = GetOriginImageFileUrl(itUrl.GetBuffer());
        return itUrlOrigin.CompareNoCase(urlOrigin) == 0 ? true : false;
    };

(1)[],什么都不传

for (int i=0; i<10; ++i)
{
    auto fun_helloworld = [](std::string aa)->void {
        std::cout <<  aa << std::endl;
    };

    fun_helloworld("haha");
}


(2)[]中传外部变量,如this
例子:
for (int i=0; i<10; ++i)
{
    auto fun_helloworld3 = [i](std::string aa)->void {
        std::cout <<  i << "---" << aa << std::endl;
    };

    fun_helloworld3("haha");
}

(3)[=],"="是值传递即只能使用外部变量,不能改变值
for (int i=0; i<10; ++i)
{
    auto fun_helloworld3 = [=](std::string aa)->void {
        std::cout <<  i << "---" << aa << std::endl;
    };

    fun_helloworld3("haha");
}

(4)[&],"&"是引用传递,即可以在内部改变外部变量
for (int i=0; i<10; ++i)
{
    auto fun_helloworld3 = [&](std::string aa)->void {
        std::cout <<  i << "---" << aa << std::endl;
        if (i == 9)
        {
            i = 0;
        }
    };

    fun_helloworld3("haha");
}


[]中现在经常看到过this,&,=
说明:=意思是值传递,只能使用外部变量,不能改变
&是引用传递,即可以在内部改变外部变量

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值