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

【C++ 11 新特性】function 函数包装器的使用

文章目录

      • 1.为什么要使用 function 呢?
      • 2.作为函数的回调函数
      • 3.包装不同的函数
      • 4.包装类的成员函数

1.为什么要使用 function 呢?

统一接口:可以用同样的方式处理各种可调用对象

灵活性:运行时可以动态改变调用的函数

回调机制:非常适合实现回调函数

存储函数:可以存储在容器中,实现函数表

2.作为函数的回调函数

void calculate(int a, int b, function<int(int, int)> callback)
{int res = callback(a, b);cout << "res :" << res << endl;
}int main()
{//传递不同的回调函数calculate(10, 5, [](int a, int b) {return a + b; });calculate(10, 5, [](int a, int b) {return a - b; });calculate(10, 5, [](int a, int b) {return a * b; });return 0;
}

在这里插入图片描述

3.包装不同的函数

#include <iostream>
#include <functional>
#include <vector>using namespace std;int Add(int a, int b)
{return a + b;
}int main()
{vector<function<int(int, int)>> vecFun;//vecFun.push_back(Add);vecFun.push_back([](int a, int b) {return a + b; });vecFun.push_back([](int a, int b) {return a - b; });vecFun.push_back([](int a, int b) {return a * b; });vecFun.push_back([](int a, int b) {return a / b; });for (auto& func : vecFun) {cout << func(10, 5) << endl;}return 0;
}

在这里插入图片描述

4.包装类的成员函数

class Calculator {public:int add(int a, int b) {return a + b;}
};int main()
{Calculator cal;function<int(int, int)> func = [&cal](int a, int b){return cal.add(a, b); };cout << func(10, 5) << endl;return 0;
}

在这里插入图片描述

http://www.dtcms.com/a/350269.html

相关文章:

  • Java程序员如何快速就业或跳槽?
  • Flask 之请求钩子详解:掌控请求生命周期
  • 基于Flask和AI的智能简历分析系统开发全流程
  • 护照阅读器应用
  • java18学习笔记
  • 【大模型本地运行与部署框架】Ollama的API交互
  • Vue Flow 设计大模型工作流
  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第六章知识点问答(22题)
  • 连锁零售排班难?自动排班系统来解决
  • DDR3入门系列(二)------DDR3硬件电路及Xilinx MIG IP核介绍
  • 基于LZO的无损数据压缩IP,高性能压缩速率32Gbps,压缩率50%,适用FPGAASIC
  • TDengine IDMP 应用场景:IT 系统监控
  • HIVE创建UDF函数全流程
  • 【URP】Unity 插入自定义RenderPass
  • 【学习记录】CSS: clamp、@scope
  • C++ extern 关键字面试深度解析
  • 大模型的思考方式
  • 引脚电平异常?以下或许是原因
  • Java 高可用实现方式
  • 基于MATLAB长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析等领域中的实践技术应用
  • 面试常考算法题汇总
  • Java设计模式-观察者模式
  • MATLAB函数文件编写规范
  • imx6ull-驱动开发篇41——Linux RTC 驱动实验
  • 详解flink SQL基础(四)
  • 使用Docker+WordPress部署个人博客
  • 无人机和无人系统的计算机视觉-人工智能无人机
  • k8s的etcd备份脚本
  • 4G模块 EC200通过MQTT协议连接到阿里云
  • Java-面试八股文-Java高级篇