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

STL 4函数对象

函数对象(Functor)是 C++ STL 的核心概念之一,它允许类实例像函数一样被调用。

1. 函数对象

1.定义与本质
1.函数对象:重载了 operator() 的类或结构体实例。
2.核心特性:可像普通函数一样调用,且可携带状态。

2. Lambda

Lambda 表达式是 C++11 引入的一项重要特性,它提供了一种简洁的方式来定义匿名函数对象,使代码更紧凑、更具可读性。

1. 语法

1.[capture list]:捕获外部变量的方式(如 [x, &y])。
2.(parameter list):参数列表(可省略,如 ())。
3.-> return type:返回类型(可省略,由编译器推导)。
4.{ function body }:函数体。

2. 本质

Lambda 表达式本质上是编译器自动生成的函数对象(Functor)。

3. 捕获方法

1.值捕获(By Value)
2.引用捕获(By Reference)
3.隐式捕获

隐式捕获是 C++ Lambda 表达式中一种简洁的变量捕获方式,允许你自动捕获外部作用域中的变量,而无需显式列出每个变量名。

隐式捕获只会捕获 Lambda 函数体中实际使用的外部变量,而非全部可见变量。

1.基本语法
隐式捕获通过在捕获列表中使用 [=] 或 [&] 实现:
1.[=]:值捕获(By Value)所有外部变量。
2.[&]:引用捕获(By Reference)所有外部变量。

2.可隐式捕获变量。
1.lambda所在函数体的局部变量和函数参数
2.this指针

3.不可隐式捕获变量。(可直接访问)
1.全局变量
2.静态变量

4.混合捕获

相关文章:

  • 前端6月份之前的部分技术更新记录
  • 创始人IP打造:创客匠人的实战经验与启示
  • 编译原理 学习 2025年6月10日11:17:54
  • MongoDB 基础
  • RAG文档解析难点2:excel数据“大海捞针”,超大Excel解析与精准行列查询指南
  • 如何查看电脑系统启动时间?
  • spring cloud
  • VQA新突破:零样本推理与多智能体策略引领看图回答新时代
  • 论文解析:一文弄懂Vision Transformer!
  • SaaS(软件即服务)和 PaaS(平台即服务)的定义及区别(服务对象不同、管理责任边界、典型应用场景)
  • 计算机基础(一):ASCll、GB2312、GBK、Unicode、UTF-32、UTF-16、UTF-8深度解析
  • 题单:二分查找(==x个数)
  • 【Linux篇】细品环境变量与地址空间
  • linux 错误码总结
  • aruco::detectMarkers中什么情况下marker会被判定为rejectedMarkers
  • Linux向文件每行结尾追加指定内容的方法
  • [一生一芯] 如何基于iSTA 分析时序
  • 看板更新不及时该如何规范
  • 校园二手交易平台(微信小程序版)
  • 解析 Go 语言中 time 包在实现定时任务时的易错点
  • 网站策划专员所需知识/国内seo服务商
  • 徐州企业建站程序/百度热搜榜排名今日第一
  • 深圳专业网站开发公司/网上代写文章一般多少钱
  • 易思腾网站建设/竞价推广开户电话
  • 阳逻开发区网站建设中企动力/磁力兔子
  • 本地用织梦做网站/网络营销软件下载