永久免费建站系统,网页设计与制作试卷分析,怎样建设公司的网站,短视频网站php源码免费欢迎来到 破晓的历程的 博客 ⛺️不负时光#xff0c;不负己✈️ 引言
今天 我们来见见lambda表达式的高级用法
用法1#xff1a;自定义删除器
有些类型的delete方法并不符合自身的析构方法#xff0c;这时我们就需要自定义删除器。
unique_ptrFILE ptr1(fopen… 欢迎来到 破晓的历程的 博客 ⛺️不负时光不负己✈️ 引言
今天 我们来见见lambda表达式的高级用法
用法1自定义删除器
有些类型的delete方法并不符合自身的析构方法这时我们就需要自定义删除器。
unique_ptrFILE ptr1(fopen(data.txt,w));这样写对吗答案是不对的因为unique_ptr的删除方式是delete但是这里我们需要fclose(ptr1)。 所以我们可以这样做 unique_ptrFILE, functionvoid(FILE*)ptr1(fopen(data.txt, w), [](FILE* ptr) {fclose(ptr); });使用lambda做一个自定义删除器。
用法2priority_queue
我们知道priority_queue的底层要对数据进行比较以我们需要传入相对应的比较方式
class Data
{
public:Data(int ma,int mb):ma_(ma),mb_(mb){}int ma_;int mb_;
};
int main()
{using FUNC functionbool(Data, Data);priority_queueData, vectorData, FUNC maxHeap([](Data d1, Data d2)-bool{return d1.ma_ d2.ma_;});maxHeap.push(Data(10, 10));maxHeap.push(Data(20, 20));
}
这样我们修改lambda表达式即可。