摘要:
C与C++的关系: C++在C语言的基础上进行的升级最重要的是两个方面: 1、类型的加强,C++更称得上是高级语言,C++语言对于类型的检查更严格 2、面向对象的支持,天生支持面向对象软件开发方法学 C++语言是C语言的进化。 C++语言更强调语言的实用性,有一些语法方面的加强 所有变量都可以在需要 阅读全文
摘要:
C++是C语言的加强,它们之间并不是对立的关系。 学习C++的优势: 现代软件产品的架构图: 操作系统抽象层:可有可无,但是作为一个移植性好的软件一定需要这一层。这一层的作用就是把操作系统提供的接口做一层封装,用C++面向对象的特性进行封装,然后在这一层之上再做一层应用程序框架。当我们将程序移植到另 阅读全文
摘要:
这一节我们分析前面实现的线性表的功能和性能。 效率分析: 上图中给出了时间复杂度的分析,但是这还不是效率的分析。 长度相同的两个SeqList,插入和删除操作的平均耗时是否相同呢? 如下所示: insert中最耗时的操作是那个for循环,假设两个SeqList,一个存的是int型,一个存的是stri 阅读全文
摘要:
本节我们要实现StaticList和DynamicList,如下: StaticList的设计要点: StaticList是一个类模板,使用原生数组作为顺序存储空间,使用模板参数决定数组大小 在StaticList的类模板中我们定义了一个元素数组作为顺序存储空间。这就是static的含义。因此,需要 阅读全文
摘要:
接下来,我们完成顺序存储结构线性表的抽象实现 抽象实现意味着SeqList是一个抽象类,在这一抽象类里面,我们仅仅把关键的操作实现了,但是还是不能生成具体的对象,这是因为顺序存储空间的指定并没有在SeqList中来完成,存储空间的最终指定在SeqList的两个子类中完成。 SeqList的设计要点如 阅读全文
摘要:
线性表是用来以线性的方式组织元素的,是一个逻辑结构。线性表组织数据需要一定的存储单元。 顺序存储的定义: 顺序存储在C++中就可以考虑用一个固定大小的数组来作为存储介质。 设计思路: 顺序存储结构的元素获取操作: 顺序存储结构的插入操作: 顺序存储结构的插入示例: 顺序存储结构的删除操作: 顺序存储 阅读全文
摘要:
线性表(List)的表现形式: 零个或者多个数据元素组成的集合 数据元素在位置上是有序排列的 数据元素的个数是有限的 数据元素的类型必须相同 线性表的抽象定义: 线性表的性质: a0为线性表的第一个元素,只有一个后继 an-1为线性表的最后一个元素,只有一个前驱 除了a0和an-1外,其他的元素ai 阅读全文
摘要:
前几节我们开发的智能指针类和异常类族并没有继承自Object,现在我们需要将它们进行整合,作为DTLib这个类库的基础设施。整合的时候需要遵循现代软件的架构模式。 遵循经典设计准则 DTLib中所有类位于单一继承树,可以根据下图中的方式进行整合: 在异常类族中有了新的成员InvalidOperati 阅读全文
摘要:
我们学习数据结构,为什么要创建顶层父类呢? 我们的目标是创建一个可复用的数据结构类库,可复用指的就是在不同的工程里面,我们可以使用本次创建的数据结构库,在不同的编译器、不同的工程、不同的背景下使用这个库都是可以的。既然涉及到了工程应用,我们就需要考虑在当今的软件架构方法中是如何创建一个库的。 当代软 阅读全文
摘要:
当代C++库基本上都会使用C++里面的异常特性,依赖于异常特性所创建的库的稳定性是非常好的。因此,我们创建的库也要引入异常类族。本节中,我们就给DTLib添加异常类族。 异常的类型可以是自定义的类类型 对于类类型的异常的匹配依旧是自上而下的严格匹配 赋值兼容性原则在异常匹配中依然适用 一般而言 匹配 阅读全文