当前位置: 首页 > 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.混合捕获
http://www.xdnf.cn/news/967537.html

相关文章:

  • 工控类UI设计经常接触到10.1寸迪文屏
  • React【回顾】 深层次面试详解:函数式组件核心原理与高级优化
  • 香港科技大学(广州)机器人与自主系统学域(ROAS)2025年度夏令营招募!
  • 《高等数学》(同济大学·第7版)第三章第六节函数图形的描绘
  • 如何判断Cursor邮箱被封?
  • 【Dv3Admin】系统视图角色菜单API文件解析
  • 钉钉告警集成部署指南
  • DataSource学习
  • 【时时三省】(C语言基础)静态局部变量(static局部变量)
  • Visual Studio2022配置OpenCV环境
  • 自定义表单组件面板排序处理
  • 页面渲染流程与性能优化
  • 如何删除导出的xml中的xmlns:xsd=
  • XML Group端口详解
  • RSA算法
  • 第4章 对象与类
  • 基于51单片机的热敏电阻测温及温度调控系统
  • SpringBoot项目使用Redis作为数据缓存
  • 业务:资产管理功能
  • 亚远景-ASPICE评估标准解析:汽车软件开发的过程能力模型
  • 【Java多线程从青铜到王者】懒汉模式的优化(九)
  • WebLogic简介
  • 第6章 方法 笔记
  • DevSecOps实践:CI/CD流水线集成SAST工具的完整指南
  • 【LeetCode】二叉树相关算法题
  • 笔记 软件工程复习
  • Vue.js教学第二十二章:vue实战项目商城项目
  • el-upload组件,上传文件失败,:on-error方法失效
  • 人工智能与大数据融合发展:新一代智能系统的演进路径
  • 计算机行业光辉开始暗淡