c++进阶之unique_ptr与lambda的结合妙用(代码片段)

KookNut39 KookNut39     2023-01-05     291

关键词:

题外话:我没想到真有人会订阅这个专栏,本来这个栏我不打算更新了,但是为了对得起目前唯一订阅我专栏的兄弟,我决定要更新,很感谢他的支持。我先说下为什么这些文章都付费了,本来我windows专栏是免费的,后来发现即使写一篇很好的文章,几乎得不到什么反馈和评论,我索性把文章设置成付费专栏,有缘的朋友们就随缘订阅,以后应该所有发的新文章都会付费。

今天想说一下有关unique_ptr的一些使用方式还有lambda函数的用法,我相信很多学习C++的同学都了解过这两个东西,但是具体的使用上可能和我之前有着同样的疑惑,那就是具体什么时候去用?应该怎么用的问题?
C++的智能指针是我们需要去学习和使用的东西,既然是官方封装好的东西,肯定是有它的道理,C++不像java那样有自己的垃圾回收机制(所以chrome被迫自己封了一套GC机制),这就导致C++的内存管理会有一些内存泄露的情况发生,毕竟程序员每天码那么多代码,并且这个圈子确实大家水平参差不齐,出现内存泄露那就是常有的事情了,而智能指针的出现,很大程度上帮助我们避免内存泄露的问题,这里我想提unique_ptr与C++11新特新匿名指针的结合使用的使用场景。

template<
    class T

c++进阶---智能指针(代码片段)

智能指针RAIIC++98的auto_ptrauto_ptr的使用auto_ptr模拟实现C++11的unique_ptr,shared_ptr,weak_ptrunique_ptrunique_ptr的使用unique_ptr的模拟实现shared_ptrshared_ptr的使用shared_ptr的模拟实现线程安全循环引用lambda+shared_p 查看详情

c++进阶---智能指针(代码片段)

智能指针RAIIC++98的auto_ptrauto_ptr的使用auto_ptr模拟实现C++11的unique_ptr,shared_ptr,weak_ptrunique_ptrunique_ptr的使用unique_ptr的模拟实现shared_ptrshared_ptr的使用shared_ptr的模拟实现线程安全循环引用lambda+shared_p 查看详情

c++之模板进阶(代码片段)

模板进阶文章目录模板进阶非类型模板参数非类型模板参数缺省值模板的特化概念函数模板的特化类模板的特化全特化偏特化模板分离编译什么是分离编译模板总结优点缺点没了解过模板的读者,先学习模板初阶:C+&#... 查看详情

java高阶进阶之java函数式编程-stream流-lambda表达式(代码片段)

简介jdk1.8中新增了流Stream,和Lambda表达式Stream流、Lambda表达式是函数式编程思想,可以让我们不用关注什么对象,而是关注对数据进行了什么操作,Stream可以很方便对我们的集合数组进行操作。并且在大数据下处理效... 查看详情

java高阶进阶之java函数式编程-stream流-lambda表达式(代码片段)

简介jdk1.8中新增了流Stream,和Lambda表达式Stream流、Lambda表达式是函数式编程思想,可以让我们不用关注什么对象,而是关注对数据进行了什么操作,Stream可以很方便对我们的集合数组进行操作。并且在大数据下处理效... 查看详情

为啥我不能在 C++14 的 lambda 中移动 std::unique_ptr?

】为啥我不能在C++14的lambda中移动std::unique_ptr?【英文标题】:Whycan\'tImovethestd::unique_ptrinsidelambdainC++14?为什么我不能在C++14的lambda中移动std::unique_ptr?【发布时间】:2015-08-1205:47:22【问题描述】:我想在lambda中传递一个原始指针... 查看详情

如何将 unique_ptr 捕获到 lambda 表达式中?

】如何将unique_ptr捕获到lambda表达式中?【英文标题】:Howtocaptureaunique_ptrintoalambdaexpression?【发布时间】:2012-01-0409:51:05【问题描述】:我尝试了以下方法:std::function<void()>getAction(std::unique_ptr<MyClass>&&psomething)//Theca... 查看详情

c++之lambda表达式的介绍(代码片段)

lambda表达式的引出如果我们想要对一组数据进行排序,则可以使用sort函数来排序,但是对于自定义类型调用此函数的时候,我们需要来自定义比较大小的逻辑,比如下面这个例子classApublic:A(inta=0):_a(a)//自己定... 查看详情

在 c++14 lambda 表达式中捕获和移动 unique_ptr

】在c++14lambda表达式中捕获和移动unique_ptr【英文标题】:Captureandmoveaunique_ptrinac++14lambdaexpression【发布时间】:2015-03-0405:26:35【问题描述】:我以这种方式在lambda表达式中捕获unique_ptr:autostr=make_unique<string>("mystring");autolambda=[... 查看详情

c++树进阶系列之嘿!别绕了,这个问题可以使用并查集(代码片段)

1.前言并查集是一种抽象数据结构,可以从名字上解释其功能。集:操作对象是集合群,并查集是与集合操作有关的数据结构。查:查询元素所在的集合。并:合并元素之间关系的集合。并查集是一种优雅而灵动的数据结构。让... 查看详情

c++模板进阶(代码片段)

模板进阶目标非类型模板参数模板的特化概念模板的编译函数模板的特化类模板化全特化偏特化--重点模板分离编译什么是分离编译模板分离所带来的优点普通.h文件实例化模板所造成问题解决方法首先介绍一下.hpp与.h区别解决... 查看详情

c++模板进阶(代码片段)

模板进阶目标非类型模板参数模板的特化概念模板的编译函数模板的特化类模板化全特化偏特化--重点模板分离编译什么是分离编译模板分离所带来的优点普通.h文件实例化模板所造成问题解决方法首先介绍一下.hpp与.h区别解决... 查看详情

c++简单实现unique_ptr(代码片段)

...通过在某个时候负责删除指向的对象来管理指向的对象。unique_ptr对象在它们本身被销毁时,或者一旦它们的值通过赋值操作或显式调用unique_ptr::reset而改变,就会自动删除它们所管理的对象(使用删除器)。unique_pt 查看详情

为啥 lambda init-capture 对 unique_ptr 不起作用?

】为啥lambdainit-capture对unique_ptr不起作用?【英文标题】:Whydoeslambdainit-capturenotworkforunique_ptr?为什么lambdainit-capture对unique_ptr不起作用?【发布时间】:2015-10-3005:15:15【问题描述】:我正在尝试使用C++14初始化捕获功能通过捕获将u... 查看详情

智能指针之unique_ptr(代码片段)

  对于动态申请的内存,C++语言为我们提供了new和delete运算符,而没有像java一样,提供一个完整的GC机制,因此对于我们申请的动态内存,我们需要时刻记得释放,且不能重复释放,释放后不能再去使用... 因此在使用时造... 查看详情

c++树进阶系列之平衡二叉查找树(avl)的自平衡算法(代码片段)

1.前言树的深度与性能的关系。在二叉排序树上进行查找时,其时间复杂度理论上接近二分算法的时间复杂度O(logn)。但是,这里有一个问题,如果数列中的数字顺序不一样时,构建出来的二叉排序树的深度会有差异性,对最后评... 查看详情

c++培训lambda

...,还是介绍的C++11新特性,一下介绍的是:C++11新特性之lambda  不想看toycode的读者可以直接拉到文章最后看这部分的总结。  lambda简介  熟悉Python的程序员应该对lambda不陌生。简单来说,lambda就是一个匿名的可调用代码块... 查看详情

C++:通过引用 unique_ptr 对象使 unique_ptr 为空

】C++:通过引用unique_ptr对象使unique_ptr为空【英文标题】:C++:makeunique_ptrnullbyreferencetounique_ptrobject【发布时间】:2021-05-1210:52:26【问题描述】:这可能是一个愚蠢的问题,但我可以通过引用unique_ptr对象来使unique_ptr为空吗?#include... 查看详情