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

匿名函数

竞赛/技巧

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


#include <bits/stdc++.h>
using namespace std;int main() {vector<int> v = {5, 3, 1, 4, 2};// 基本Lambda格式: [capture\](parameters){bparametersody}sort(v.begin(), v.end(), [](int a, int b) {return a > b;  // 降序排序});for(auto x : v) {printf("%d ", x);  // 输出: 5 4 3 2 1}puts("");// 带捕获列表的Lambdaint base = 100;auto add = [base](int x) { return x + base; };printf("%d\n", add(5));  // 输出105
}

C 语言匿名函数 (GCC扩展)

#include <stdio.h>
#include <stdlib.h>// GCC的嵌套函数扩展 (不是标准C)
void c_style() {int cmp(const void *a, const void *b) {return *(int*)b - *(int*)a;  // 降序排序}int arr[] = {5, 3, 1, 4, 2};qsort(arr, 5, sizeof(int), cmp);for(int i=0; i<5; i++) {printf("%d ", arr[i]);  // 输出: 5 4 3 2 1}puts("");
}int main() {c_style();return 0;
}

主要区别对比表:

特性 C++ Lambda C 嵌套函数(GCC)
标准支持 C++11及以上标准 GCC扩展,非标准C
捕获外部变量 支持([=]/[&]/[a,&b]等) 只能访问外层函数的局部变量
用作回调函数 可以直接传递 需要转换为函数指针
生命周期 可以返回和存储 只能在定义它的函数内使用
典型应用场景 STL算法回调、异步编程等 仅限于当前函数内部使用

你的风格实现建议:


#include <bits/stdc++.h>
using namespace std;int main() {// 1. 简单Lambda - 排序int arr[] = {3,1,4,5,9,2,6};sort(arr, arr+7, [](int a, int b){return a > b;  // 降序});// 2. 带捕获的Lambda - 计算int k = 10;auto func = [k](int x) {printf("%d\n", x + k);};func(5);  // 输出15// 3. 在STL算法中使用vector<int> v = {5,3,1,4,2};for_each(v.begin(), v.end(), [](int x){printf("%d ", x);});
}

注意事项:

  1. C++ Lambda是真正的闭包,可以捕获外部变量

  2. C的嵌套函数只是语法糖,实际还是普通函数

  3. 在工程代码中,C++推荐用Lambda,C语言建议用普通函数

  4. Lambda的捕获列表:

    • [=] 值捕获

    • [&] 引用捕获

    • [a,&b] 混合捕获

http://www.sczhlp.com/news/132476/

相关文章:

  • HarmonyOS资源管理与访问:多分辨率与多语言适配
  • 面试官:为什么没有虚拟线程池?
  • 玄武模板网站制作点击查看济南做网站要多少钱
  • 核工业南京建设集团网站经营之道的特点
  • 营销型网站建设是什么意思网站设计 站
  • 网站策划的最终体现是撰写网站策划书凡科建设网站的步骤
  • 网站手机网站制作适合网络科技的公司名字
  • 2昌平区网站建设百度一下你就知道下
  • 国内便宜机票网站建设网页视频怎么下载到手机上
  • 天心区网站建设公司防查水表 wordpress 评论
  • 哪个网站做美食自媒体更好wordpress 手机版域名
  • 什么颜色做网站好看产品拍摄
  • 润生软件简介:以“重构与共生”引领商业未来
  • Python 并发编程
  • 广州网站制作是什么相似图片在线查找
  • 招聘网站开发教程图片转链接在线转换
  • 网站推广公司 sithtml网页可以用以下哪个工具制作
  • 怎么做买东西的网站网站权重不够高 导致
  • 网站开发 自我评价安次区建设局网站
  • 单位网站建设意见建议企业网站建设价格
  • 统计机器学习经典分类算法MATLAB实现
  • 从安装到中文界面,一文带你玩转 DaVinci Resolve 20(零基础也能搞定)
  • 靶场1
  • 旅游网站内容做多还是少昆明企业做网站
  • 怎么做免费的网站链接网页设计代码大全
  • 京东商城网站建设目的成都微信小程序制作价格
  • 专门做运动鞋的网站劳务公司找项目平台
  • 杭州模板网站制作上海网站建设-目前企业网站所面临的困惑
  • 做网站备案完成之后需要干什么WordPress显示网站加载时间
  • 网站设计基本原则长沙县住房和城乡建设局网站