随笔分类 - C++
摘要:构造函数和析构函数中的虚函数 在执行基类构造函数时,对象的派生类部分是未初始化的。实际上,此时对象还不是一个派生类对象。 为 了适应这种不完整,编译器将对象的类型视为在构造或析构期间发生了变化。在基类构造函数或析构函数中,将派生类对象当作基类类型对象对待。 如果在构造函数或析构函数中调用虚函数,则运
阅读全文
摘要:看了云风关于protected的思考,自己也总结了下。 C++的访问权限有三个 private、protected、public。 如果不包括继承的话,比较好理解,可以分为类外和类内两部分。类外不能访问private,可以访问public。 这里注意访问限制是相对于类的,而不是对象。下面这个例子可以
阅读全文
摘要:堆排序整理如下,函数中有重复代码,为了避免多一次函数调用。 重点是堆的下滤操作
阅读全文
摘要:partition函数是快排的核心部分它的目的就是将数组划分为pivot两部分,或者是=pivot其实现方法大体有两种,单向扫描版本和双向扫描版本,但是具体到某个版本,其实现方法也是千差万别,参差不齐。本着严谨治学的态度,我将目前所接触的所有实现列举出来,并作出比较。除了伪代码,我也会给出相应的C&...
阅读全文
摘要:再次优化快速排序,三数中值取理想的pivot,三向切分忽略与pivot相同的元素,小数组转插入排序(唯一不足递归实现,不过是尾递归,编译器可以优化掉)代码很短,而且可读性很好,记录于此以供参考const int cutoff = 3;void insertSort(int a[], int len)...
阅读全文
摘要:void mergeSort(int a[], int len){ int *temp = new int[len]; int gap = 1; while (gap len - 1 ? len : i + gap; int end = mid + gap ...
阅读全文
摘要:这个题一开始本想用快速排序的,但是想了20分钟都没有头绪,难点在于快速排序的随机访问无法用链表实现,不过如果可以实现快速排序partition函数就可以了,但是这可能比较复杂,于是改用其他排序方法,上网查了下,大部分都采用了归并排序,归并排序并不需要有跨度的访问元素,可能唯一耗时的就是寻找中间点,这...
阅读全文
摘要:#ifndef __BINARY_HEAP_H__#define __BINARY_HEAP_H__#include #include #include template class HeapStruct { friend std::ostream& operator(std::ostream...
阅读全文
摘要:这是leetcode上的3个题目,要求用非递归实现,其中以后序遍历实现最难,既然递归实现的三种遍历程序只需要改变输入代码顺序,为什么循环不可以呢,带着这种执拗的想法,我开始了这次研究我依然是将递归用栈来实现,而不打算使用改变二叉树结构的方法,那个我打算日后研究首先以前序遍历为例递归实现是:void ...
阅读全文
摘要:#ifndef __RED_BLACK_TREE_H__#define __RED_BLACK_TREE_H__namespace lxf { template class RedBlackTree { struct Node { enum Colo...
阅读全文
摘要:#ifndef __BINARY_SEARCH_H__#define __BINARY_SEARCH_H__#include #include template class BinarySearchTree;template std::ostream& operator&);template cla...
阅读全文
摘要:#include #include #include #include int computeSuffixExp(char expression[], size_t len){ std::stack dump; for (int i = 0; i >> *、- >>> +、-void i...
阅读全文
摘要:方法一:非递归方法,利用辅助指针,时间复杂度为O(n)程序如下:template struct ListNode { Type data; ListNode* next; ListNode(Type pdata) :data(pdata), next(nullptr) {}};te...
阅读全文
摘要:pimpl 模式(Private Implementation),我们常常听到诸如“不要改动你的公有接口”这样的建议,所以我们一般都会修改私有接口,但是这会导致包含该头文件的所有源文件都要重新编译,这会是个麻烦事儿。Pimpl机制,顾名思义,将实现私有化,力图使得头文件对改变不透明。桥接模式(bri...
阅读全文