摘要: 还是直接上代码吧: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 using namespace std; 9 10 static const int hashtable_length = 6151; 11 static const int hashtable_compare = 769; 12 13 // 用于定位一个Bucket 14 unsigned int hash1(const char* str) 15 { 16 const char... 阅读全文
posted @ 2013-09-22 23:30 铁甲小宝 阅读(222) 评论(0) 推荐(1)
摘要: 练习代码: 1 #include 2 #include 3 4 class Something 5 { 6 private: 7 char* name; 8 int weight; 9 public: 10 Something(){ 11 printf("调用了无参构造函数!\n"); 12 weight = 0; 13 name = NULL; 14 } 15 Something(int w, const char* str = NULL) 16 { 17... 阅读全文
posted @ 2013-09-22 00:12 铁甲小宝 阅读(203) 评论(0) 推荐(0)
摘要: 练习代码: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 struct cmp 8 { 9 // 重载operator()10 // 注意:compare函数的参数必须写成const类型,否则无法编译通过11 // 这里是有意使string按字典序的反序排列12 bool operator()(const string& str1, const string& str2)13 {14 return str1>str2;15 }... 阅读全文
posted @ 2013-09-21 19:08 铁甲小宝 阅读(174) 评论(0) 推荐(0)
摘要: 可以看出来,32位有符号整数可表示的最大数大于20亿,32位无符号整数可表示的最大数大于40亿,因此,碰上十几亿的海量数据处理时,不要慌~~ 1 // 在32位系统中 2 // int的范围是[-2147483648,2147483647] 3 // unsigned int的范围是[0,4294967295] 4 const unsigned int min_uint = 0; 5 const unsigned int max_uint = 4294967295; 6 const int min_int = -(int)2147483648; 7 const int max_int = (i 阅读全文
posted @ 2013-09-21 15:04 铁甲小宝 阅读(2397) 评论(0) 推荐(0)
摘要: 自己写代码调用了一下STL的堆,然后自己也写了一个,还不确定自己的写法是不是和STL的一眼,目前只是非常朴素的实现了而已,有时间比较一下,看看差别:(似乎make_heap的方式不一样,我是一个一个insert的) 1 #include 2 #include 3 4 using namespace std; 5 6 7 // 向上调整 8 void adjust_up(int* ptr_begin, int idx); 9 // 插入新元素 10 void heap_insert(int* ptr_begin, int*& ptr_end, int ele); 11... 阅读全文
posted @ 2013-09-19 17:53 铁甲小宝 阅读(214) 评论(0) 推荐(0)
摘要: 1、面向对象的三大特点: (1)封装:把客观事物封装成抽象类,达到“属性和方法的集和性”和“信息隐蔽性”; (2)继承:派生类可以继承基类的属性和方法; (3)多态:主要体现在函数覆盖上,覆盖是针对虚函数。C++代码练习: 1 #include 2 #include 3 4 #pragma pack(1) 5 6 ////////////////////////////////////////////////////////////////////////// 7 // 面向对象三大特征之一:封装 8 // 方法和属性包装成一个整体,并且具有信息隐蔽性 9 cl... 阅读全文
posted @ 2013-09-19 15:14 铁甲小宝 阅读(223) 评论(0) 推荐(0)
摘要: 三个问题:(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)