当前位置: 首页 > wzjs >正文

wordpress 做网站龙岩网站优化费用

wordpress 做网站,龙岩网站优化费用,电商网站价格监控,手机怎么访问wap网站Lambda 表达式是 C11 引入的一项重要特性,它允许你在代码中创建匿名函数对象。Lambda 表达式为编写简洁、灵活的代码提供了便利,尤其适用于函数式编程和需要传递简短回调函数的场景。下面从基本语法、捕获列表、使用场景等方面详细介绍 Lambda 表达式。 …

     Lambda 表达式是 C++11 引入的一项重要特性,它允许你在代码中创建匿名函数对象。Lambda 表达式为编写简洁、灵活的代码提供了便利,尤其适用于函数式编程和需要传递简短回调函数的场景。下面从基本语法、捕获列表、使用场景等方面详细介绍 Lambda 表达式。

语法格式

[capture list] (parameter list) mutable(可选) exception attribute(可选) -> return type(可选) { function body }
  • 捕获列表(capture list):用于指定 Lambda 表达式可以访问的外部变量,决定了外部变量以何种方式(按值或按引用)被 Lambda 捕获。
  • 参数列表(parameter list):与普通函数的参数列表类似,用于传递给 Lambda 表达式的参数。可以为空。
  • mutable:可选关键字。当使用按值捕获时,默认情况下捕获的变量是只读的,使用mutable可以修改按值捕获的变量。
  • exception attribute:可选,用于指定异常说明,如noexcept
  • 返回类型(return type):可选,若 Lambda 表达式的返回类型可以由编译器自动推导,则可以省略。
  • 函数体(function body):包含 Lambda 表达式要执行的代码。
捕获列表

捕获列表有以下几种常见形式:

  • 空捕获列表 []:表示 Lambda 表达式不捕获任何外部变量。
#include <iostream>int main() {// 定义一个带有空捕获列表的 Lambda 表达式auto printMessage = []() {std::cout << "这是一个简单的 Lambda 消息。" << std::endl;};// 调用 Lambda 表达式printMessage();return 0;
}  
  • 按值捕获 [=]:表示 Lambda 表达式按值捕获所有外部变量。
     捕获的是定义时候的变量的值
#include <iostream>int main() {int a = 10;int b = 20;// 使用 [=] 按值捕获所有外部变量auto lambda = [=]() {std::cout << "a 的值(Lambda 内部): " << a << std::endl;  //输出10std::cout << "b 的值(Lambda 内部): " << b << std::endl;  //输出20};a = 30; //Lambda表达式捕获的是定义时候值,不是调用时候// 调用 Lambda 表达式lambda();return 0;
} 
  • 按引用捕获 [&]:表示 Lambda 表达式按引用捕获所有外部变量。
#include <iostream>int main() {int a = 10;int b = 20;// 使用 [&] 按引用捕获所有外部变量auto lambda = [&]() {a = 100;b = 200;std::cout << "a 的值(Lambda 内部): " << a << std::endl; //100std::cout << "b 的值(Lambda 内部): " << b << std::endl; //200};// 调用 Lambda 表达式lambda();std::cout << "a 的值(Lambda 外部): " << a << std::endl; //100std::cout << "b 的值(Lambda 外部): " << b << std::endl; //200return 0;
} 
  • 混合捕获:可以指定按值或按引用捕获特定的变量。
    [a, &b]:按值捕获变量 a,按引用捕获变量 b
    [=, &a]:默认按值捕获所有外部变量,但变量 a 按引用捕获。
    [&, a]:默认按引用捕获所有外部变量,但变量 a 按值捕获。
#include <iostream>int main() {int a = 10;int b = 20;// 按值捕获 a,按引用捕获 bauto lambda = [a, &b]() {std::cout << "a 的值(Lambda 内部): " << a << std::endl;   //10b = 200;std::cout << "b 的值(Lambda 内部修改后): " << b << std::endl; //200};// 调用 Lambda 表达式lambda();std::cout << "a 的值(Lambda 外部): " << a << std::endl; //10std::cout << "b 的值(Lambda 外部): " << b << std::endl; //200return 0;
}  
#include <iostream>int main() {int a = 10;int b = 20;int c = 30;// 默认按值捕获,变量 b 按引用捕获auto lambda = [=, &b]() {std::cout << "a 的值(Lambda 内部): " << a << std::endl;b = 200;std::cout << "b 的值(Lambda 内部修改后): " << b << std::endl;std::cout << "c 的值(Lambda 内部): " << c << std::endl;};// 调用 Lambda 表达式lambda();std::cout << "a 的值(Lambda 外部): " << a << std::endl;std::cout << "b 的值(Lambda 外部): " << b << std::endl;std::cout << "c 的值(Lambda 外部): " << c << std::endl;return 0;
}    
#include <iostream>int main() {int a = 10;int b = 20;int c = 30;auto lambda = [&, a]() mutable {//a 按值捕获,修改副本不影响外部a=9;std::cout << "Lambda 内 a 原始副本值:" << a << std::endl; //9 修改是临时变量//b 和 c 按引用捕获,修改会影响外部b = 200;c = 300;std::cout << "Lambda 内修改后的 b 值:" << b << std::endl; //200std::cout << "Lambda 内修改后的 c 值:" << c << std::endl; //300};lambda();std::cout << "Lambda 外 a 的值:" << a << std::endl; //10 不会被修改std::cout << "Lambda 外 b 的值:" << b << std::endl; //200std::cout << "Lambda 外 c 的值:" << c << std::endl; //300
return 0;
}

注意事项

  • 避免悬空引用:与按引用捕获一样,混合捕获中按引用捕获的变量在 Lambda 执行时必须有效,否则会产生悬空引用,导致未定义行为。
  • 捕获列表的顺序:捕获列表中变量的顺序不影响捕获结果,但为了代码的可读性,建议按逻辑顺序排列。
  • 重复捕获:不允许对同一个变量进行重复捕获,例如 [a, &a] 会导致编译错误。 
 mutable关键字

    可选关键字, 当使用按值捕获时,默认情况下捕获的变量是只读的,使用mutable可以修改按值捕获的变量。 

#include <iostream>int main() {int value = 10;// 定义一个带 mutable 的 Lambda 表达式auto lambda = [value]()  {// 修改按值捕获的变量value = 20; //不带 mutable会编译报错,assignment of read-only variable ‘value’std::cout << "Lambda 内部修改后的 value 值: " << value << std::endl;};// 调用 Lambda 表达式lambda();// 输出外部变量的值,验证其未被修改std::cout << "Lambda 外部的 value 值: " << value << std::endl;return 0;
}    


文章转载自:

http://kOd5Qwd9.zpLzj.cn
http://XBmr7Qlq.zpLzj.cn
http://gGFd3E6T.zpLzj.cn
http://WFh4gI9T.zpLzj.cn
http://hxXf3ptS.zpLzj.cn
http://ea1JGAJX.zpLzj.cn
http://f3PYK1Pr.zpLzj.cn
http://Tb5vYkth.zpLzj.cn
http://MZMojFTm.zpLzj.cn
http://BBwrkUm5.zpLzj.cn
http://HSARFGPO.zpLzj.cn
http://TiFx0a71.zpLzj.cn
http://RDt15Yt4.zpLzj.cn
http://TE14CE3q.zpLzj.cn
http://Jh7sJfv4.zpLzj.cn
http://INhPRO9M.zpLzj.cn
http://niIMZZHx.zpLzj.cn
http://AEqXzot4.zpLzj.cn
http://2onSh5As.zpLzj.cn
http://N1wyN4h8.zpLzj.cn
http://5J8X7gIF.zpLzj.cn
http://k92HLMs7.zpLzj.cn
http://5lZAJxlr.zpLzj.cn
http://cPE2JrJs.zpLzj.cn
http://HNKG9uPx.zpLzj.cn
http://YC1AQ84N.zpLzj.cn
http://1AHZRJar.zpLzj.cn
http://pl4A7ycI.zpLzj.cn
http://hdmbV6YO.zpLzj.cn
http://Zmc5Ym6D.zpLzj.cn
http://www.dtcms.com/wzjs/692593.html

相关文章:

  • 海门建设厅网站江北网站建设的技术
  • 一个做特卖的网站中国建设第一平台网站
  • 阿里云需要网站建设方案书北京搬家公司24小时服务电话
  • 怎么建个人网站wordpress如何改页面模板
  • 甘肃网站建设专业定制域名怎么申请
  • 钦州网站建设公司微信公众平台管理系统
  • 做母婴用品的网站有哪些建设网站怎样分配给用户空间
  • 四川专业网站建设推广WordPress到底有什么好
  • 网站建设行业前景如何口红网络营销策划方案
  • 建设银行客户端网站wordpress棋牌模板
  • 代账公司网站模板卖农产品最好的平台
  • 基础设施建设网站2023年房地产彻底结束
  • 成都网站建设及推广图像处理与网站开发
  • 网站建设学习网站网站建设制作、微信公众号
  • 望牛墩网站建设seo网络营销招聘
  • 高端网站开发培训xml wordpress
  • 领导视察网站建设3a公司网络营销方案
  • 国外做美食视频网站有哪些舆情系统的作用
  • 免费企业网站建设哪种应用软件免费下载
  • 长春网站开发推荐做彩票网站需要什么
  • 媒体公司网站模板北京营销型网站建设
  • 昌平网站建设域名网站建设流程
  • 网站关键词优化wang天津市建设教育培训网
  • 专门做选择题的网站c 做特产网站
  • 厦门做网站xm37广告设计公司成都
  • 山西响应式网站建设公司2017年网站建设工作总结
  • 网站哪里有网站布局规范
  • 金融网站模板素材加快建设乡镇招商网站
  • 白百度一下你就知道搜索引擎优化方法总结
  • 静态手机网站建设的基本特点无锡制作网站价格表