C++Lambda表达式(匿名函数)

news/2024/12/27 0:44:18/

Lambda表达式时C++11时引入的特性

Lambda又被称作匿名函数,本质是一个特殊的,匿名的类类型。他是一个带有operator()的类,即仿函数。

[capture](params)->ret{body;];

capture:捕获列表 

        []:表示不捕获任何变量

        [=]:表示按值捕获变量

        [&]:表示按引用捕获变量

params:参数表

ret:返回值类型

body:是函数体

class Addnum
{
public:Addnum(int num):_num(num){}/*int addnum(int x)const {return _num + x;}*/int  operator()(int x)const{return _num + x;}
private:int _num;
};
int main()
{auto num1 = Addnum(10);auto x = num1(5);cout << x << endl;auto add_num2 = [num2 = 10](int x){return num2 + x; };auto lambda_x = add_num2(5);cout << lambda_x << endl;return 0;
}
int main()
{//末尾直接传参auto x = [](int x)->int {return ++x; }(5);cout << x << endl;[]()->void {cout << "lambda!" << endl; }();//返回值可以用auto代替 ->可以省略//std::function<int(int)>func = [](int x)->int {return ++x; };auto func = [](int x) {return ++x; };for (int i = 0; i < 10; i++){cout << func(i) << endl;}return 0;
}

和for_each()函数的结合使用

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;int main()
{int multiplier = 2;vector<int>arr = { 1,3,5,7,9 };//可以单个取值multiplier 也可以取值全部变量for_each(arr.begin(), arr.end(), [multiplier](int x) {cout << x * multiplier << endl;});for_each(arr.begin(), arr.end(), [=](int x) {cout << x * multiplier << endl;});//可以单个引用multiplier 也可以引用全部变量for_each(arr.begin(), arr.end(), [&multiplier](int x) {multiplier++;cout << x * multiplier << endl;});for_each(arr.begin(), arr.end(), [&](int x) {multiplier++;cout << x * multiplier << endl;});return 0;
}


http://www.ppmy.cn/news/341749.html

相关文章

软件自动化测试

测试的目的&#xff1a; 保证软件质量 第一章 JMock测试框架 1.1 简介 Mock测试是一种常见的测试方法&#xff0c;通常在执行测试的时候&#xff0c;测试代码往往需要与一些真实对象进行交互&#xff0c;又或者被测代码的执行需要依赖真实对象的功能。此时&#xff0c;我们可…

iPhone XI再度被曝光,或采用新技术“黑色镜头涂层”...

iPhone XI将配备5.8英寸OLED屏幕&#xff0c;后置摄像头将升级为三摄。 大家都知道&#xff0c;每年的9月都是苹果发布新iPhone的时间&#xff0c;而现在距新机发布还有半年左右的时间&#xff0c;但是关于iPhone XI的报道却一直停歇过。而最近&#xff0c;据著名分析师郭明錤…

iPhone XI再度被曝光,或采用新技术“黑色镜头涂层”

iPhone XI将配备5.8英寸OLED屏幕&#xff0c;后置摄像头将升级为三摄。 大家都知道&#xff0c;每年的9月都是苹果发布新iPhone的时间&#xff0c;而现在距新机发布还有半年左右的时间&#xff0c;但是关于iPhone XI的报道却一直停歇过。而最近&#xff0c;据著名分析师郭明錤…

功耗降低99%,Panamorph超清VR光学架构解析

近期&#xff0c;投影仪变形镜头厂商Panamorph获得新型VR显示技术专利&#xff08;US11493773B2&#xff09;&#xff0c;该专利方案采用了紧凑的结构&#xff0c;结合了Pancake透镜和光波导显示模组&#xff0c;宣称比传统VR方案的功耗、发热减少99%以上&#xff0c;可显著提高…

爆裂:未来社会的 9 大生存原则

内容介绍 今天的世界比我们历史上的任何其他时候都更加复杂和充满不确定性。现代社会目前使用的工具越来越强大&#xff0c;从电脑、可穿戴设备到人工智能……它们正向着速度更快&#xff0c;价格更低和体积更小的方向迅猛增长。 比如当我们有了推特&#xff0c;世界上数以十…

索尼vgn ux拆屏幕_UX最佳实践:如何设计可扫描的应用程序屏幕截图

索尼vgn ux拆屏幕 by Girish Rawat 由吉里什拉瓦特(Girish Rawat) 如何设计可扫描的应用程序屏幕截图 (How to Design Scannable App Screenshots) 重新设计HeyDoctor的App Store屏幕截图 (Redesigning HeyDoctor’s App Store Screenshots) Let’s play a game. Pick an app …

机器视觉设计者如何选择合适的镜头?

为了实现具有成本效益的机器视觉系统&#xff0c;开发人员必须从众多可用的镜头中选择最合适的产品。 对于机器视觉系统设计者来说&#xff0c;由于市场上存在诸多不同类型、不同分辨率和不同图像失真特性的镜头产品可供选择&#xff0c;因此针对某一特定应用&#xff0c;在选择…

可以在手机上使用的提醒事项软件有哪些

随着科技的进步&#xff0c;越来越多的人选择使用各种手机软件来提高自己的效率&#xff0c;高效率的手机软件已经成为人们生活和工作中不可或缺的一部分。其中&#xff0c;提醒事项软件是一种非常实用的工具&#xff0c;可以督促用户按时完成任务&#xff0c;有效防止遗忘。 …