一篇文章彻底搞懂红黑树
0.概述 如上图整理所示 红黑树是一种平衡的二叉树,引入它为了解决的问题是因为普通的二叉查找树在插入元素是正序或者逆序的时候,左右子树的高度会变得极奇不平衡,导致他就丧失了作为二叉查找树查找复杂度o(logn)的优势,复杂度会增长到o(n)...
0.概述 如上图整理所示 红黑树是一种平衡的二叉树,引入它为了解决的问题是因为普通的二叉查找树在插入元素是正序或者逆序的时候,左右子树的高度会变得极奇不平衡,导致他就丧失了作为二叉查找树查找复杂度o(logn)的优势,复杂度会增长到o(n)...
0.概述 vector动态数组, 顾名思义 ,空间可以动态变化的数组,自然与数组array非常相似. array使用时必须一开始就定好使用空间,定好以后就不能变了, 使用途中要想让空间大一点,必须在重新开辟一块更大的内存空间,然后...
1.内存布局 1.0.概述 一个可执行程序文件需要在计算机硬件上运行起来, 其实质就是静态的文件被加载到内存中的过程, 可执行程序文件只是一个程序的载体。 那么执行一个应用后, 它在内存中是一个怎样的结构呢? 一个程序被加载到内存中,这...
本系列的上一篇文章讲了手动方式的内存管理 new delete 这种方式往往存在很多问题 这一节将讲通过智能指针来自动管理动态内存 智能指针的引入 智能指针的引入有以下几大原因 1.在动态内存管理中,如果new上一块...
在这一系列的第一篇文章中讲了 程序的内存结构 在堆区的内存是要通过new delete系列函数来分配释放的 那么在new delete的背后 程序到底做了什么?又有哪些注意点? 本文将一一解密 new operator 1. 这...
关于本系列的一个总结 今天先说说第一部分 程序的内存结构 介绍 关于程序的内存结构 其实用一张图就可以说明清楚 结构 详细的讲讲各个部分分别有什么 也是用一张图来说明清楚 例子 关键点 堆和栈有什么不同
继承的基本概念 继承就是新类从已有类那里得到已有的特性。 类的派生指的是从已有类产生新类的过程。原有的类成为基类或父类,产生的新类称为派生类或子类,为了代码的重用,保留基类的原本结构,并新增派生类的部分,一个派生类可以通过继承获得基类的所有...
面向对象三大特性? 封装性:数据和代码捆绑在一起,避免外界干扰和不确定性访问。 继承性:让某种类型对象获得另一个类型对象的属性和方法。 多态性:同一事物表现出不同事物的能力,即向不同对象发送同一消息,不同的对象在接收时会产生不同的行为(重载...
1.参数传递 介绍 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且...
sizeof运算符 sizeof与strlen的区别 函 参 组 节 1)strlen计算字符串的具体长度(只能是字符串),不包括字符串结束符。返回的是字符个数。 2)sizeof计算声明后所占的内存数(字节大小),不是实际长度。 3)si...