摘要:
定义迭代器模式(Iterator Pattern)提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象内部细节。迭代器模式通用类图Iterator抽象迭代器抽象迭代器负责定义访问和遍历元素的接口,而且基本上是有固定的3个方法:First()获取第一个元素,Next()访问下一个元素,IsDon... 阅读全文
摘要:
写在之前: C++是支持多重继承的,但一定要慎用,因为很容易出现各种各样的问题。 #include using namespace std;class B1{public: B1(){coutusing namespace std;class B1{public: B1(){coutusing namespace std;class A{public: A(int a)... 阅读全文
摘要:
快速排序是冒泡排序的升级,属于交换排序快速排序(Quick Sort)的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字ixoa,则可分别对这两部分记录继续进行排序,以达到整个排序有序的目的。/* 快速排序*********************... 阅读全文
摘要:
堆的概念堆是具有下列性质的完全二叉树:每个节点的值都大于或等于其左右孩子结点的值,称为大顶堆;或着每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。堆排序堆排序(Heap Sort)就是利用堆(假设利用大顶堆)进行排序的方法。它的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列的最大... 阅读全文
摘要:
排序的基本概念假设含有n个记录的序列为{r1,r2,……,rn},其相应的关键字分别为{k1,k2,……,kn},需确定1,2,……,n的一种排序p1,p2,……,pn,使其相应的关键字满足kp1≤kp2≤……≤kpn非递减(或非递增)关系,即使得序列称为一个按关键字有序的序列{rp1,rp2,……... 阅读全文
摘要:
动态连接基本上分三步 启动动态连接器本身 装载所有需要的共享对象 重定位和初始化 动态连接器本身也是一个共享对象,但其不依赖于其他任何共享对象,其本身所需的全局和静态变量的重定位工作由它本身完成。动态链接器必须在启动时有一段非常精巧的代码可以完成这项工作而同时保证不用到全局和静态变量。这种具有一定限制条件的启动代码往往被称为自举(Bootstrap)。 实际上动态连... 阅读全文
摘要:
基础概念 散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key).这里对应关系f称为散列函数,又称为哈希(Hash)函数。 采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或哈希表(Hash table)。 散列技术既是一种存储方法,也是一种查找方法。 散列技术最适合的求解问题是查找与给定值相等的记录。不... 阅读全文
摘要:
根据MSDN中的介绍,亲测整理。本篇比较长,如不愿花费太多时间,可只看第一段和第四段,甚至只看第四段。内存泄漏,即未能正确释放以前分配的内存,是 C/C++ 应用程序中最难以捉摸也最难以检测到的 Bug 之一。借助 Visual Studio 调试器和 C 运行时 (CRT) 库,可以检测和识别内存... 阅读全文
摘要:
书是第四版,人民邮电出版社出版的。感兴趣的朋友可以一同交流下。希望能坚持下去! =================================================================== 命名空间: 在C++语言中,唯一使用完整的命名空间前缀(eg: std::)的情况是在头文件中发生的,例如cout写作std::cout,这是为了不使同一个using声明出现在多... 阅读全文