自学内容网 自学内容网

【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表达式即可。


原文地址:https://blog.csdn.net/2301_79181030/article/details/142770617

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!