admin管理员组文章数量:1794759
【C++】:lambda表达式的高级应用
引言
今天 我们来见见lambda表达式的高级用法
用法1:自定义删除器
有些类型的delete方法并不符合自身的析构方法,这时我们就需要自定义删除器。
代码语言:javascript代码运行次数:0运行复制unique_ptr<FILE> ptr1(fopen("data.txt","w"));
这样写对吗?答案是不对的,因为unique_ptr的删除方式是delete,但是这里我们需要fclose(ptr1)。 所以我们可以这样做:
代码语言:javascript代码运行次数:0运行复制 unique_ptr<FILE, function<void(FILE*)>>ptr1(fopen("data.txt", "w"), [](FILE* ptr) {fclose(ptr); });
使用lambda做一个自定义删除器。
用法2:priority_queue
我们知道:priority_queue的底层要对数据进行比较,以我们需要传入相对应的比较方式:
代码语言:javascript代码运行次数:0运行复制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表达式即可。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-10-08,如有侵权请联系 cloudcommunity@tencent 删除dataintlambda数据c++本文标签: Clambda表达式的高级应用
版权声明:本文标题:【C++】:lambda表达式的高级应用 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754966654a1708773.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论