二叉树是极为常见的数据结构,关于如何遍历其中元素的文章更是数不胜数。 然而大多数文章都是讲解的前序/中序/后序遍历,有关逐层打印元素的文章并不多,已有文章的讲解也较为晦涩读起来不得要领。本文将用形象的图片加上清晰的代码帮助你理解层序遍历的实现,同时我们使用现代c++提供的智能指针来简化树形数据结构的 ...
分类:
编程语言 时间:
2019-04-23 20:38:31
阅读次数:
190
unique_ptr 1.概念 unique_ptr形如其名,与所指对象的内存紧密地绑定,不能与其他的unique_ptr类型的指针对象共享所指向对象的内存。 在cplusplus.com中,unique_ptr声明如下: 是一个模版类,T指得是指向内存的类型,D指得是deleter类型,默认为de ...
分类:
编程语言 时间:
2019-04-19 12:12:26
阅读次数:
188
enable_shared_from_this是一个模板类,定义于头文件<memory>,其原型为: template< class T > class enable_shared_from_this; std::enable_shared_from_this 能让一个对象(假设其名为 t ,且已被 ...
分类:
其他好文 时间:
2019-04-08 13:57:40
阅读次数:
140
一:线程与进程 1. 进程 :是一个正在执行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元; 2.线程 : 进程的一个独立控制单元,进程不共享数据,线程可以共享数据 3多线程:使用并发原理,是多个线程呈现出共同运行的情况 二:线程的生命周期 1.新建:从线程被建立 ...
分类:
编程语言 时间:
2019-04-02 12:39:59
阅读次数:
177
要确保用 new 动态分配的内存空间在程序的各条执行路径都能被释放是一件麻烦的事情。C++ 11 模板库的 <memory> 头文件中定义的智能指针,即 shared _ptr 模板,就是用来部分解决这个问题的。 只要将 new 运算符返回的指针 p 交给一个 shared_ptr 对象“托管”,就 ...
分类:
编程语言 时间:
2019-03-16 09:19:29
阅读次数:
248
1.智能指针有哪些?share和unique有什么区别?如何实现一个unique? 概念:智能指针是一个类,这个类的构造函数中传入一个普通指针,析构函数中释放传入的指针。智能指针的类都是栈上的对象,所以当函数(或程序)结束时会自动被释放.即将基本类型指针封装为类对象指针(这个类肯定是个模板,以适应不... ...
分类:
其他好文 时间:
2019-03-13 19:59:06
阅读次数:
372
智能指针是行为类似于指针的类对象,但这种对象还有其他功能。 本节介绍三个可帮助管理动态内存分配的智能指针模板(auto_ptr、unique_ptr和shared_ptr)。 void remodel(std:string & str) { std::string * ps = new std::s ...
分类:
编程语言 时间:
2019-03-08 00:28:48
阅读次数:
222
auto_ptr包含于头文件 #include<memory> 其中<vector><string>这些库中也存有。auto_ptr 能够方便的管理单个堆内存对象,在你不用的时候自动帮你释放内存。 auto_ptr的设计目的: 局部对象获取的资源(内存),当函数退出时,它们的析构函数被调用,从而自动 ...
分类:
其他好文 时间:
2019-02-22 23:27:32
阅读次数:
266
动态内存的使用很容易出问题,因为确保在正确的时间释放内存是极为困难的。有时我们会忘记释放内存产生内存泄漏,有时提前释放了内存,再使用指针去引用内存就会报错。 为了更容易(同时也更安全)地使用动态内存,新的标准库提供了两种 智能指针 类型来管理动态对象。智能指针的行为类似常规指针,区别在于它负责自动释 ...
分类:
编程语言 时间:
2019-02-20 22:48:41
阅读次数:
265
本想总结一下智能指针使用的帖子,但发现别人已经总结的很好了,所以直接收藏了 https://www.cnblogs.com/wxquare/p/4759020.html ...
分类:
编程语言 时间:
2019-02-06 18:33:15
阅读次数:
124