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

大一网站开发项目答辩自建站平台

大一网站开发项目答辩,自建站平台,wordpress返回最新文章,wordpress自动采集插件最好C11 Lambda 的变量捕获 1. 什么是 Lambda 表达式 C11 引入了 Lambda 表达式,它是一种匿名函数对象,允许我们在需要的地方定义一个简短的函数,而无需显式地定义一个命名函数。Lambda 表达式的基本语法如下 [capture list] (parameter list…

C++11 Lambda 的变量捕获

1. 什么是 Lambda 表达式

        C++11 引入了 Lambda 表达式,它是一种匿名函数对象,允许我们在需要的地方定义一个简短的函数,而无需显式地定义一个命名函数。Lambda 表达式的基本语法如下  

[capture list] (parameter list) -> return type { function body }

        cpature list:用于捕获外部变量,可指定 Lambda 表达式如何访问其所在作用域中的变量

        parameter list: 和普通函数的参数列表类似

        return type:可省略,编译器会自动推导返回类型

        function body:Lambda函数具体的实现

2. 变量捕获的方式
2.1 值捕获

        值捕获会将外部变量的副本存储在 Lambda 表达式中。在 Lambda 表达式创建时,变量的值就被复制,之后即使外部变量的值发生改变,Lambda 内部使用的仍是捕获时的值。

#include <iostream>int main() {int x = 10;auto lambda = [x]() {std::cout << "Captured value of x: " << x << std::endl;};x = 20;lambda(); // 输出 10return 0;
}
2.2 引用捕获

        引用捕获会存储外部变量的引用,而不是副本。这意味着 Lambda 内部对变量的修改会影响到外部变量,反之亦然。        

#include <iostream>int main() {int x = 10;auto lambda = [&x]() {std::cout << "Captured reference of x: " << x << std::endl;x = 20;};lambda(); // 输出 10std::cout << "Value of x after lambda: " << x << std::endl; // 输出 20return 0;
}
2.3 混合捕获

        可以同时使用值捕获和引用捕获,用逗号分隔不同的捕获方式。

#include <iostream>int main() {int x = 10;int y = 20;auto lambda = [x, &y]() {std::cout << "Captured value of x: " << x << std::endl;std::cout << "Captured reference of y: " << y << std::endl;y = 30;};lambda();std::cout << "Value of y after lambda: " << y << std::endl; // 输出 30return 0;
}
2.4 默认捕获
#include <iostream>int main() {int x = 10;int y = 20;auto lambda1 = [=]() {std::cout << "Captured values: x = " << x << ", y = " << y << std::endl;};auto lambda2 = [&]() {std::cout << "Captured references: x = " << x << ", y = " << y << std::endl;x = 30;y = 40;};lambda1();lambda2();std::cout << "Values after lambda2: x = " << x << ", y = " << y << std::endl;return 0;
}

Lambda 在 Qt 中的应用

1. 与信号和槽结合使用

        在 Qt 中,信号与槽机制是处理事件的核心。Lambda 表达式可以作为槽函数使用,使得代码更加简洁。

#include <QApplication>
#include <QPushButton>
#include <QWidget>int main(int argc, char *argv[]) {QApplication app(argc, argv);QWidget window;QPushButton button("Click me", &window);int counter = 0;QObject::connect(&button, &QPushButton::clicked, [&counter]() {counter++;std::cout << "Button clicked " << counter << " times." << std::endl;});window.show();return app.exec();
}

        在这个例子中,我们创建了一个 QPushButton,并使用 QObject::connect 将其 clicked 信号连接到一个 Lambda 表达式。每次按钮被点击时,Lambda 表达式会将 counter 变量加 1 并输出点击次数。由于使用了引用捕获,Lambda 内部可以修改外部的 counter 变量。

2. 在 QTimer 中使用

   QTimer 是 Qt 中用于定时触发事件的类,Lambda 表达式可以方便地作为定时器的槽函数。

#include <QApplication>
#include <QTimer>
#include <iostream>int main(int argc, char *argv[]) {QApplication app(argc, argv);int counter = 0;QTimer timer;QObject::connect(&timer, &QTimer::timeout, [&counter]() {counter++;std::cout << "Timer ticked " << counter << " times." << std::endl;if (counter >= 5) {QCoreApplication::quit();}});timer.start(1000); // 每秒触发一次return app.exec();
}

         在这个例子中,我们创建了一个 QTimer,并将其 timeout 信号连接到一个 Lambda 表达式。定时器每秒触发一次 timeout 信号,Lambda 表达式会将 counter 变量加 1 并输出计时次数。当 counter 达到 5 时,程序退出。

 

http://www.dtcms.com/wzjs/289018.html

相关文章:

  • 网站开发平台的定义外贸商城建站
  • 巩义做网站的深圳营销型网站开发
  • wordpress首页分页函数泉州seo网站排名
  • wordpress更改页面图片链接搜索引擎优化培训中心
  • 一般人做不了咨询顾问百度seo搜索
  • 公司网站制作机构独立站seo外链平台
  • 做设计的什么网站能挣钱淘宝关键词优化软件
  • 如果做好招聘网站建设怎么去推广自己的产品
  • 常德网站建下载百度语音导航地图
  • php做网站用框架百度的营销中心上班怎么样
  • 制作企业网站新闻列表页面网页设计ping站长工具
  • 网站建设中企动力推荐微营销官网
  • 日本插画网站有哪些广西壮族自治区免费百度推广
  • 美女和帅哥做私人动作的漫画的网站百度app免费下载
  • 网站和主机有什么不同销售新手怎么找客源
  • 安顺做网站北京seo外包 靠谱
  • 南通云网站建设西安官网seo技术
  • 关于开通网站建设的请示网络营销方案有哪些
  • 镇海区建设交通局网站进不去了如何制作一个网页
  • 平面设计公司招聘要求优化大师是什么软件
  • 提供邢台企业做网站培训计划方案模板
  • 网站首页可以做竖版吗seo关键词库
  • 集团为什么做网站中国新冠一共死去的人数
  • 哪个网站开发好2020做seo还有出路吗
  • 网站搜索排名怎么做襄阳seo优化排名
  • 互动网站设计与制作宁德市政府
  • 不会编码可以做网站优化吗网站注册流程
  • 专注微信网站建设站长之家ping检测
  • 网站建设横幅免费招聘信息发布平台
  • 温州建设工程网站什么平台打广告比较好免费的