10 2019 档案
发表于 2019-10-26 22:00阅读:158评论:0推荐:0
摘要:BinarySearchTree 二叉搜索树 二叉查找树(Binary Search Tree)。搜索,插入,删除的复杂度等于树高,O(log(n))。 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树
阅读全文 »
发表于 2019-10-26 20:29阅读:138评论:0推荐:0
摘要:对象模型 当一个类本身定义了虚函数,或其父类有虚函数时,为了支持多态机制,编译器将为该类添加一个虚函数指针(vptr)。虚函数指针一般都放在对象内存布局的第一个位置上,这是为了保证在多层继承或多重继承的情况下能以最高效率取到虚函数表。当vprt位于对象内存最前面时,对象的地址即为虚函数指针地址。
阅读全文 »
发表于 2019-10-26 19:51阅读:154评论:0推荐:0
摘要:递归遍历 前序 中序 后序 非递归遍历 前序 先访问根节点,再将其入栈,以便之后返回,就这样一直遍历到左子树最下面,然后出栈,进入右子树,继续开始遍历。 中序 后序
阅读全文 »
发表于 2019-10-24 22:06阅读:386评论:0推荐:0
摘要:带头尾结点的单链表
阅读全文 »
发表于 2019-10-23 21:28阅读:108评论:0推荐:0
摘要:```c++ include using std::cin; using std::cout; using std::endl; //插入排序 升序 void InsertSort(int a[], int n) { for (int j = 1; j = 0 && a[i] key) { a[i
阅读全文 »
发表于 2019-10-23 21:22阅读:194评论:0推荐:0
摘要:归并排序 vector实现 c++ include include using std::cout; using std::endl; using std::vector; void Merge(vector &v, int L, int M, int R) { //拆分成两个vector:left
阅读全文 »
发表于 2019-10-23 21:10阅读:143评论:0推荐:0
摘要:双向链表(一口气写完) 更新后的双向链表,上面的链表惨不忍睹,看看下面重构的吧 实在忍不住,模仿STL写了个阉割版的List,还没加迭代器,等搞完STL源码再说吧。
阅读全文 »
发表于 2019-10-19 18:16阅读:196评论:0推荐:0
摘要:动态内存与智能指针 智能指针分为shared_ptr、unique_ptr、weak_ptr,他们负责自动释放所指向的对象,shared_ptr允许多个指针指向同一个对象,unique_ptr独占所指向的对象,weak_ptr是一种弱引用,指向shared_ptr所管理的对象,他们都定义在memor
阅读全文 »
发表于 2019-10-18 18:27阅读:258评论:0推荐:0
摘要:可以重载global的operator new delete 函数,细节如下: MyNewDelete.h NewDelete.cpp
阅读全文 »
发表于 2019-10-16 19:55阅读:450评论:0推荐:0
摘要:类型转换函数 与 explicit关键字 1.类型转换函数 在C++中,可以使用构造函数将一个指定类型的数据转换为类的对象,也可以使用类型转换函数 (type conversion function)将一个类对象转换为其他类型的数据。例: 分数(Fraction)类 f是一个Fraction类型的变
阅读全文 »
发表于 2019-10-15 09:06阅读:529评论:0推荐:0
摘要:利用Lambda表达式,可以方便的定义和创建匿名函数。 声明Lambda表达式 Lambda表达式完整的声明格式如下: 各项具体含义如下: 此外,我们还可以省略其中的某些成分来声明“不完整”的Lambda表达式,常见的有以下几种: 其中: 格式1声明了const类型的表达式,这种类型的表达式不能修改
阅读全文 »