摘要: 三个问题:(1)B树是满足什么要求的树;(2)如何插入;(3)如何删除(1)B树是满足什么要求的树,三个要求: 1、B树有一个唯一的参数:最小度数,设t为某B树的小度数; 2、B树的每一个结点至少需要有t-1个关键字; 3、B树的每一个结点至多有2t-1个关键字; 备注:根节点可以少于t-1个关键字; 解释:结点的关键字树限制非常巧妙,可以完美配合它的插入和删除策略,比如: 一:删除一个内结点中的关键字,其子女之和的范围在[2t-2, 4t-2],当在[2t-2, 2t-1]时则合并,能满足要求,当子女之和在[2t, 4t-2]时则分裂,能满足要求; ... 阅读全文
posted @ 2013-09-17 23:58 铁甲小宝 阅读(321) 评论(0) 推荐(0)
摘要: 下面是自己写的一段极简单的模拟STL中的内存管理方法,仅是个人理解,而且,只模拟我自己理解的部分 1 #include "stdlib.h" 2 3 union obj 4 { 5 union obj* next; 6 char data[1]; // 这个char* data本是为了理解起来更容易而声明的,但是我第一次看到它却被搞糊涂了,因此干脆简化成了下面的版本,功能上一模一样 7 }; 8 9 struct memory_space_ptr10 {11 struct memory_space_ptr* next; /... 阅读全文
posted @ 2013-09-17 21:47 铁甲小宝 阅读(234) 评论(0) 推荐(0)
摘要: 下面这一段代码无法正常运行: 1 #include "stdlib.h" 2 3 4 int main(int argc, char* argv[]) 5 { 6 void* result = malloc(4); 7 int* ptr = (int*) result; 8 9 10 { // 代码段A 11 for (int i = 0; i < 100; i++, ptr++)12 {13 *ptr = i; // 此处竟然可以越界访问没有... 阅读全文
posted @ 2013-09-17 19:38 铁甲小宝 阅读(219) 评论(0) 推荐(0)
摘要: 1 #define N 32 #define Y(n) ((N+1)*n)3 z = 2*(N+Y(5+1));4 //z == 48易错,难点在于:理解宏函数的参数是表达式的话,不进行计算,而是直接带入,就地展开,重新分析运算符的优先级。z = 2*(3 + (3+1)*5+1) 阅读全文
posted @ 2013-09-17 16:40 铁甲小宝 阅读(196) 评论(0) 推荐(0)
摘要: 1 int my_sum_func(int i, int k) 2 { 3 return i+k; 4 } 5 // 定义函数指针的两种方式 6 7 // 第一种:声明一个函数指针变量 8 int (*func_ptr)(int, int); 9 // (int(*)(int, int)) func_ptr; 这种声明方式不合法10 // 函数指针书写的几个要点:11 // 1 标识符前面加*12 // 2 (*标识符)(参数列表)13 // 3 最前面是返回值类型14 15 // 第二种:定义一个函数指针类型,再用这个类型去声明一个变量,本质上还是声明一个函数指针变量16 typ... 阅读全文
posted @ 2013-09-17 16:29 铁甲小宝 阅读(216) 评论(0) 推荐(0)
摘要: 1、指针可以指向空:int* ptr = null;//合法2、引用必须指向一个确实存在的元素,引用在初始化的时候必须赋予初值,而指针可以不赋予初值:int& n; //不合法,必须赋予初值int* ptr; //合法3、当引用指向的对象是局部变量时: 1 int& get_reference_of_tmp() 2 { 3 int num = 123; 4 int& n = num; 5 return n; 6 } 7 void do_something() 8 { 9 int num = 321;10 }11 12 int main(int argc,... 阅读全文
posted @ 2013-09-17 15:45 铁甲小宝 阅读(246) 评论(0) 推荐(0)
摘要: 初次接触讲STL的书,翻来翻去,满眼就看到两个字“泛型”。认真学习一番之后,终于从最初的一头雾水,到现在的稍微有些领悟。 个人感觉,应该先从第三章开始看,即:Iterator。这一章讲的内容贯穿全书。其实这章并不是只讲Iterator,而且也没把Iterator讲完,却一直在讲type——型别,认真读完之后,感觉学到了很多新东西,包括语法层面到设计模式。 首先,Iterator本身是一种设计模式,在Design Patterns一书中P171~P181有介绍,但是那本书出现的太早了,导致上面的例子被STL源码剖析当作反例来讲。Iterator这一章的重要性在于它出现在一个矛盾点上——全... 阅读全文
posted @ 2013-09-17 14:56 铁甲小宝 阅读(266) 评论(0) 推荐(0)