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

【C++】:lambda表达式的高级应用

欢迎来到 破晓的历程的 博客

⛺️不负时光,不负己✈️

引言

今天 我们来见见lambda表达式的高级用法

用法1:自定义删除器

有些类型的delete方法并不符合自身的析构方法,这时我们就需要自定义删除器。

unique_ptr<FILE> ptr1(fopen("data.txt","w"));

这样写对吗?答案是不对的,因为unique_ptr的删除方式是delete,但是这里我们需要fclose(ptr1)。
所以我们可以这样做:

	unique_ptr<FILE, function<void(FILE*)>>ptr1(fopen("data.txt", "w"), [](FILE* ptr) {fclose(ptr); });

使用lambda做一个自定义删除器。

用法2:priority_queue

我们知道:priority_queue的底层要对数据进行比较,以我们需要传入相对应的比较方式:

class Data
{
public:Data(int ma,int mb):ma_(ma),mb_(mb){}int ma_;int mb_;
};
int main()
{using FUNC = function<bool(Data&, Data&)>;priority_queue<Data, vector<Data>, FUNC> maxHeap([](Data& d1, Data& d2)->bool{return d1.ma_ > d2.ma_;});maxHeap.push(Data(10, 10));maxHeap.push(Data(20, 20));
}

这样,我们修改lambda表达式即可。

http://www.lryc.cn/news/455915.html

相关文章:

  • 详解正确创建好SpringBoot项目后但是找不到Maven的问题
  • 力扣203.移除链表元素
  • UE4 材质学习笔记05(凹凸偏移和视差映射/扭曲着色器)
  • 网约班车升级手机端退票
  • 【Vue】Vue 快速教程
  • SQLite数据库介绍
  • 点击label 按钮起作用
  • JPA、Hibernate、MyBatis三种ORM框架怎么选择
  • 【C++】map详解
  • 力扣206.反转链表
  • 如何查看服务器的带宽linux服务器
  • 云原生化 - 工具镜像(完整版)
  • leetcode68:文本左右对齐
  • Linux驱动学习——内核编译
  • MES系统:制造业的智能大脑
  • 忘记 MySQL 密码怎么办:破解 root 账户密码
  • 【LeetCode每日一题】——17.电话号码的字母组合
  • Git管理远程仓库
  • 在 /var/cache/apt/archives/ 上没有足够的可用空间的解决方法
  • FastAdmin Apache下设置伪静态
  • MPI程序实例:自适应数值积分(主从模式)
  • 蓝桥杯—STM32G431RBT6(IIC通信--EEPROM(AT24C02)存储器进行通信)
  • 【重学 MySQL】六十二、非空约束的使用
  • Python获取json返回的字符串获取方法大全
  • FreeBSD14.1 rm命令的疑惑
  • LSTM模型变种
  • 基于comsol模拟微穿孔板和卷曲通道的混合吸声器低频吸声
  • Ajax ( 是什么、URL、axios、HTTP、快速收集表单 )Day01
  • 【Java 循环控制实例详解【While do... while】】
  • 10.2 Linux_进程_进程相关函数