主要针对C面向对象编程技术做详细讲解,探讨C中的核心和精髓。 1.内存分区模型 C++程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放,存放函数的参数值,局部变量等 堆区:由程序员分配和释 ...
分类:
编程语言 时间:
2021-03-09 13:17:24
阅读次数:
0
图片来源于:极客时间《数据结构与算法之美》 https://time.geekbang.org/column/intro/126 1. 数组 数组是最简单的数据结构,它的结构特点是:需要连续的内存空间,能够通过数组下标快速的访问数组内的元素,但是初始时需要指定大小,并且不能动态扩容,当容量不够时,需 ...
分类:
编程语言 时间:
2021-03-08 14:07:35
阅读次数:
0
1.无符号数与有符号数比较 有时我们可能会遇到一些数据结构的大小的判定,比如判断两个堆(假设为heap1,heap2)中元素个数差值是否大于1 heap1.size() - heap2.size() > 1 heap1.size() > heap2.size() + 1 看似等价的两个比较的不等式, ...
分类:
其他好文 时间:
2021-03-08 13:45:25
阅读次数:
0
编号144:二叉树的前序遍历 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root = [1,null,2,3] 输出:[1,2,3] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 思路 具体代码如下: / ...
分类:
其他好文 时间:
2021-03-08 13:24:07
阅读次数:
0
内容摘自:数据结构与算法之美 链表 链表并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用。 单链表 链表通过指针将一组零散的内存块串联在一起。其中,我们把内存块称为链表的“结点”。 为了将所有的结点串起来,每个链表的结点不仅要存储数据,还需要记录下一个结点的地址。我们将这个记 ...
分类:
其他好文 时间:
2021-03-08 13:20:35
阅读次数:
0
Java中的内存可以划分为五个模块: ①栈内存(Stack): 保存的是一块堆内存的空间地址,每一块栈内存只能够保留一块堆内存地址。方法的运行一定要在栈当中运行。 ②堆内存(Heap): 保存每一个对象的属性内容,即对象的真正数据。堆内存需要用关键字new才可以开辟。堆内存都有地址值:16进制。 ③ ...
分类:
编程语言 时间:
2021-03-08 13:17:03
阅读次数:
0
HashMap简介 哈希表(hash table) 也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,这种数据结构提供了键(key)和值(value)的映射关系,时间复杂度接近于O(1)。HashMap 就是一个哈 ...
分类:
其他好文 时间:
2021-03-08 13:10:59
阅读次数:
0
(Java8简介) 写在前面 之所以现在才开这个专栏,是因为之前学过,平时工作中也在用,但是总觉得用着不那么顺手,所以决定再来学一遍,然后记录下来,方便回顾。 Java8新特性简介 速度更快 更新了底层的数据结构 底层数据结构最核心的就是HashMap,下面以HashMap为例来说明: java7底 ...
分类:
编程语言 时间:
2021-03-06 15:09:37
阅读次数:
0
写在前面 仅供自用 ... Iterable 接口 在我的理解里面,如果数据结构实现了 Iterable 接口 那么 这个数据结构就是可迭代对象 当然实现这个的方法 就是 写一个迭代器工厂函数 [Symbol.iterator] 来生成一个含有 next(){} 和 return(){} 两个属性方 ...
分类:
编程语言 时间:
2021-03-06 14:36:01
阅读次数:
0
Stack就是继承Vector的,而我们常常用Deque替代Stack(Deque可以当栈也可以当队列) 不使用Vector及子类原因如下: 1. 因为vector是线程安全的,所以效率低,这容易理解,类似StringBuffer 2. Vector空间满了之后,扩容是一倍,而ArrayList仅仅 ...
分类:
编程语言 时间:
2021-03-06 14:18:29
阅读次数:
0