摘要:
函数对象 JavaScript中的函数就是对象 。对象是“名/值”对的集合并拥有一个连到原型对象的隐藏连接。对象字面量产生的对象连接到 Object.prototype。函数对象连接到 Function.prototype(该原型对象本身连接到 Object.prototype)。每个函数在创建时会 阅读全文
摘要:
程序的内存分配 在C/C++程序中,占用的内存分为几个部分: 栈区(stack) :由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆区 (heap) :一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分 阅读全文
摘要:
前言 静态内存用来保存局部static对象,类static数据成员以及定义在任何函数之外的变量。栈内存用来保存定义在函数内的非static对象。分配在静态或栈内存中的对象由编译器自动创建和销毁。对于栈对象,仅在其定义的程序块运行时才存在;static对象在使用之前分配,在程序结束时销毁。 <! mo 阅读全文
摘要:
1. 派生类的成员将隐藏同名的基类成员; 2. 除了覆盖继承而来的虚函数之外,派生类最好不要重用其他定义在基类中的名字; 3. 函数调用的解析过程对于理解继承重要; 假如调用obj func( ),将依次执行以下4个步骤: 首先确定对象obj的静态类型;因为我们调用的是一个成员,所以该类型必然是类类 阅读全文
摘要:
前言 最近在看C++ Primer的时候,对于对象移动一直不太懂,所以在查找各种资料,仔细研究代码后,打算写篇博客记录下来,果然还是不要得过且过,看见不懂的就查,弄懂为止最好了。 <! more 对象移动 很多时候都会发生对象拷贝,但是拷贝有个问题,对于有些仅仅做完拷贝就销毁的情况,其实没必要,更好 阅读全文
摘要:
前言 "Trie树理解" ,该博客已经对Trie树进行了简要的介绍; Trie树分为静态建树和动态建树,两者的区别在于: 插入操作时,静态建树中插入不存在的结点利用的是已经创建好的大数组进行存放,而动态数组则会动态申请一个结点; 删除操作时,静态建树中删除只需将跟节点的next数组都置为空即可,而动 阅读全文
摘要:
简介 实现 整数版 c include include include include using namespace std; define MAXN 100 //最大变量数量 int arr[MAXN][MAXN]; //保存增广矩阵 int result[MAXN]; //保存方程的解 int 阅读全文
摘要:
前言 在看shader程序的时候,会发现在变量类型的前面总是会有些不同的单词符号,包括了uniform,attribute,varing,in,out一系列;接下来对这些东西进行一个总结; uniform 其实就是统一变量,统一变量通常保存在所谓的“常量存储”中,可以看作一个向量数组; unifor 阅读全文
摘要:
前言 根据分类, 图的搜索分类 可以分为 BFS和DFS 记忆化搜索(基于深搜) 双向广搜 二分状态搜索 启发式搜索 与或树搜索 博弈树搜索(α β剪枝)(极大极小过程搜索) A 搜索 IDA搜索 先看BFS和DFS,因为这是最基础的搜索策略了,BFS是按照深度进行搜索,DFS则是按照广度进行搜索; 阅读全文
摘要:
简介 当一棵二叉树的每个结点都大于它的两个子结点时,被称为堆有序; 如果我们用指针来表示堆有序的二叉树,那么每个元素都需要三个指针来找到它的上下结点;但是如果我们使用完全二叉树,只用数组而不需要指针就可以表示; 什么是最小堆呢? 最小堆就是在二叉堆的基础上,符合了每个结点都比他的子结点要小的规则! 阅读全文
摘要:
数据结构 栈,队列,链表 哈希表,哈希数组 堆,优先队列 双端队列 可并堆 左偏堆 二叉查找树 Treap 伸展树 并查集 集合计数问题 二分图的识别 平衡二叉树 二叉排序树 线段树 一维线段树 二维线段树 树状数组 一维树状数组 N维树状数组 字典树 后缀数组,后缀树 块状链表 哈夫曼树 桶,跳跃 阅读全文
摘要:
来源 在没有BM算法时,其原始算法是从后往前进行匹配,需要两层循环,判断以某个字符为结尾的子串是否和模式串相等,这种算法也称作暴搜; 贴上代码: cpp void preBmBc(string x, vector& bmBc) { int i = 0; int len = (int)x.size() 阅读全文
摘要:
AVL树理解 简介 我们知道,AVL树也是平衡树中的一种,是自带平衡条件的二叉树,始终都在维护树的高度,保持着树的高度为logN,同时把 插入、查找、删除 一个结点的时间复杂度的最好和最坏情况都维持在 O(logN) ;增加和删除需要通过一次或者多次的树旋转来重新平衡这棵树。 其中规定每个结点的左子 阅读全文
摘要:
简介 类型转换的安全问题是需要考虑的重点: 1. 首先是类型的窄化转化,导致数据的丢失; 2. 接着是在类继承链中,将父亲对象的地址(指针)强制转换为子类的地址(指针),这就是所谓的下行转换,“下”表示沿着继承链往下走(子类的方向);反之上行转换,“上”表示沿着继承链往上走(父类的方向); 我们知道 阅读全文
摘要:
前言 C++ 的内存管理一直以来都是比较困难的问题,倒不至于说特别难,而是说注意的东西有很多,知识点也很多,新版本的C++11使用了引用计数,可以动态的进行内存管理,帮助程序员减少了一些工作,使用起来会更简单一些;但是毫无疑问,我们要去理解动态内存! <! more 内存管理 内存分配方式 这个是老 阅读全文
摘要:
简介 在C++ Primer中,是这样定义的 一个lambda表达式表示一个可调用的代码单元,可以将其理解为一个未命名的内联函数;与任何函数类似,一个lambda具有一个返回类型,一个参数列表和一个函数体,但和函数不同,lambda可能定义在函数内部。 形式 表达式规范如下: 其中 (1) 是完整的 阅读全文
摘要:
前言 在使用面向对象的时候,发现使用new和不使用new创建的对象区别还是蛮大的,做个总结; <! more 总结 new创建的是一个指向类对象的指针,需要指针进行接收,一处初始化,多处使用,但是不用new创建的话不需要指针,其创建的是一个类对象; new创建一个实例对象,并且指针指向该对象,作用域 阅读全文
摘要:
前言 最近在看C++ Primer的时候,对于对象移动一直不太懂,所以在查找各种资料,仔细研究代码后,打算写篇博客记录下来,果然还是不要得过且过,看见不懂的就查,弄懂为止最好了。 <! more 对象移动 很多时候都会发生对象拷贝,但是拷贝有个问题,对于有些仅仅做完拷贝就销毁的情况,其实没必要,更好 阅读全文
摘要:
题意 Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the sum ≥ s. If there isn't one, ret 阅读全文
摘要:
之前只是在C++ Primer里面看过关联容器,可能因为没有实际用过,只是看看,所以导致用的时候并不熟悉; 在这之前,map和set的特性应该要了解,map是关联数组,也就是由键值对组成的,而set只是关键字的集合,但是两者都只允许关键字是唯一的,也就是对于一个给定的关键字,它只能允许一个元素的关键 阅读全文