C++11的lambda表达式怎么使用
发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,这篇文章主要讲解了"C++11的lambda表达式怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++11的lambda表达式怎么使用"吧!可
千家信息网最后更新 2025年02月21日C++11的lambda表达式怎么使用
这篇文章主要讲解了"C++11的lambda表达式怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++11的lambda表达式怎么使用"吧!
可变lambda
假设有如下vector,保存的内容是学生的考试成绩:
vectorscore{45, 70, 56, 86, 28, 60, 90};
可以用以下代码来寻找第一个及格成绩:
find_if(score.begin(), score.end(),
[](int v){return (v >=60);});
如果需要找到第n个及格成绩,很自然地会考虑使用下面的代码:
int counter = 2;
find_if(score.begin(), score.end(),
[counter](int v){
return (v >=60)&&(--counter == 0);
});
但是很遗憾,这时会出现编译错误,告诉你counter是只读的。其原因是因为在lambda表达式中很少有需要修改捕获值的场景,因此默认捕获值具有const属性。如果出现本例这样,确实希望修改捕获值的情况,C++11使用mutable关键字来解决这个问题。来看完整代码:
int counter = 2;
auto iter find_if(score.begin(), score.end(),
[counter](int v)mutable{
return (v >=60)&&(--counter == 0);
});
cout << *iter << endl;
当然了,由于是值捕获,处于lambda表达式外面的counter值依然不会改变。
如果希望连外面的counter一起修改,使用引用捕获即可。
感谢各位的阅读,以上就是"C++11的lambda表达式怎么使用"的内容了,经过本文的学习后,相信大家对C++11的lambda表达式怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
表达式
代码
内容
成绩
学习
情况
问题
遗憾
关键
关键字
原因
场景
学生
就是
属性
思路
文章
更多
用以
知识
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
mac 搭建服务器
网站服务器最大容量内存多少g
企业级数据库市场规模
北邮网络安全评级
jpa数据库字段类型长度改不动
荔湾物联网软件开发
网络安全性检测
100篇网络安全管理者必读
数据库日志爆满如何新建
苏州戴尔官网各种服务器
阿里云服务器如何重装
应选用____数据库
怎么投诉网络技术公司
合肥星聚通网络技术有限公司
jdbc指定数据库事物隔离级别
飞鸟数据库
软件开发验收交付环节
协同软件开发口碑
5亿数据库
计算机网络技术a试题
法国数据库技术
计算机网络技术学VF吗
英特尔网络服务器怎么产生网络
西电应用密码学与网络安全作业
深圳网络技术小鹅后端开发
无锡电表软件开发公司
网络安全知识竞赛电子证书
德州市金融网络安全吗
分布式数据库怎么设置网络
os系统股票软件开发