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

【Test】function 包装器 和 bind 包装器的使用

文章目录

      • 1. function 包装器
        • 1.1 包装器 function 的实际应用🖊
      • 2. bind 包装器🔍

1. function 包装器

function 包装器 也叫作适配器。C++中的function本质是一个类模板,也是一个包装器。

  • 🐧 function 的用法如下:
    在这里插入图片描述

#include <functional>template<class F, class T>
T useF(F f, T x)
{static int count = 0;cout << "count:" << ++count << endl;cout << "count:" << &count << endl;return f(x);
}double f(double i)
{return i / 2;
}struct Functor
{double operator()(double d){return d / 3;}
};int main()
{// 函数名cout << useF(f, 11.11) << endl;// 函数对象cout << useF(Functor(), 11.11) << endl;// lamber表达式cout << useF([](double d)->double { return d / 4; }, 11.11) << endl;return 0;
}

  • 为什么 count 总是等于 1 呢?

🍎 由于模板实例化的特性,每种不同类型的实例化版本会生成一个独立的函数定义,每个定义有自己独立的静态局部变量 count

🍎 这就是为什么每次调用之后,输出的静态局部变量 count 总是等于 1,而不是累加的原因。

在这里插入图片描述


  • 用包装器 function 包装之后的结果如下:🔍

🐧 此时只需要实例化模板一次即可;

在这里插入图片描述



1.1 包装器 function 的实际应用🖊
  • LC_150_逆波兰表达式求值🍎
    题目链接🔗

在这里插入图片描述


  • 解题代码:

在这里插入图片描述



2. bind 包装器🔍

  • 🐧 bind 包装器的介绍:
    在这里插入图片描述

  • 🐧 bind 可以调整参数的顺序,改变参数的个数。
    在这里插入图片描述

在这里插入图片描述

http://www.xdnf.cn/news/458.html

相关文章:

  • 软件测试:静态测试与动态测试的全面解析
  • 大模型Rag - 如何评估Rag
  • SpringBoot启动后初始化的几种方式
  • P1042【深基8,例1】乒乓球
  • C++手撕STL-其二
  • Pandas取代Excel?
  • MCGS昆仑通太屏笔记
  • 【java实现+4种变体完整例子】排序算法中【归并排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • 【ELF2学习板】利用OpenMP采用多核并行技术提升FFTW的性能
  • 科学研究:怎么做
  • 【java实现+4种变体完整例子】排序算法中【堆排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • OSPF综合实验(HCIP)
  • 第32讲:卫星遥感与深度学习融合 —— 让地球“读懂”算法的语言
  • AUTOSAR图解==>AUTOSAR_SWS_KeyManager
  • 那就聊一聊mysql的锁
  • Firewalld防火墙
  • (二)Trae 配置C++ 编译
  • 2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型?
  • 240419 leetcode exercises
  • React 文章列表
  • JVM基础认知:JVM到底是什么?为什么它如此重要?
  • 神经网络的数学之旅:从输入到反向传播
  • 进程控制(下)【Linux操作系统】
  • stm32| 中断标志位和中断挂起位 | TIM_ClearFlag 函数和TIM_ClearITPendingBit 函数
  • .net core web api 数据验证(DataAnnotations)
  • Java集合框架中的List、Map、Set详解
  • 焕活身心,解锁健康养生新方式
  • C#学习第17天:序列化和反序列化
  • 基于Redis的3种分布式ID生成策略
  • 多线程——阻塞队列(六)