摘要:
我们学习数据结构,为什么要创建顶层父类呢? 我们的目标是创建一个可复用的数据结构类库,可复用指的就是在不同的工程里面,我们可以使用本次创建的数据结构库,在不同的编译器、不同的工程、不同的背景下使用这个库都是可以的。既然涉及到了工程应用,我们就需要考虑在当今的软件架构方法中是如何创建一个库的。 当代软
阅读全文
posted @ 2018-08-19 10:37
周伯通789
阅读(313)
推荐(0)
摘要:
当代C++库基本上都会使用C++里面的异常特性,依赖于异常特性所创建的库的稳定性是非常好的。因此,我们创建的库也要引入异常类族。本节中,我们就给DTLib添加异常类族。 异常的类型可以是自定义的类类型 对于类类型的异常的匹配依旧是自上而下的严格匹配 赋值兼容性原则在异常匹配中依然适用 一般而言 匹配
阅读全文
posted @ 2018-08-19 08:06
周伯通789
阅读(204)
推荐(0)
摘要:
异常不是错误,异常是程序中可预料到的另一条执行分支,是可预见的。错误是不可预料的。 C++内置了异常处理的语法元素try...catch...,如下: C++通过throw语句抛出异常信息: 上图中throw 0抛出异常后,程序就立即返回了。return代表正常的返回,throw代表异常的返回值。
阅读全文
posted @ 2018-08-18 20:51
周伯通789
阅读(193)
推荐(0)
摘要:
智能指针在开发中无处不在,智能指针就是用C++模板技术实现的一个类。 智能指针历史:为了解决内存泄漏 使用智能指针: 智能指针的设计方案: 通过类模板描述指针的行为 能够定义不同类型的指针对象 重载指针特征操作符(->和*) 利用对象模拟原生指针的行为 对象在生命周期结束的时候会调用析构函数,然后在
阅读全文
posted @ 2018-08-18 17:25
周伯通789
阅读(233)
推荐(0)
摘要:
数据结构课程的特点: 专注于数据元素之间的关系 专注于特定结构之上的算法 数据结构课程并不关注数据元素的具体类型 既然数据结构只关心数据元素之间的关系,我们只需要抽象的考虑数据元素之间的关系以及算法,不用关心具体的数据类型,因此,支持泛型编程的语言最适合数据结构的学习。因此,我们重点关注C++中的模
阅读全文
posted @ 2018-08-18 01:43
周伯通789
阅读(225)
推荐(0)
posted @ 2018-08-18 01:17
周伯通789
阅读(135)
推荐(0)
摘要:
常见的时间复杂度如下: 常见的时间复杂度的比较: 实例分析: 从上图的分析中,最坏的情况更具有现实的意义。 当算法在最坏的情况下仍能满足需求时,可以推断,算法的最好情况和平均情况都满足要求。 在数据结构课程中,在没有特殊说明时,所分析算法的时间复杂度都是指最坏时间复杂度。 算法的空间复杂度: 空间复
阅读全文
posted @ 2018-08-18 00:15
周伯通789
阅读(263)
推荐(0)
摘要:
判断一个算法的效率时,操作数量中的常数项和其他次要项常常可以忽略,只需要关注最高阶项就能得出结论。 如何用符号定性的判断算法的效率呢? 算法的复杂度: 时间复杂度: 算法运行后对时间需求量的定性描述。 空间复杂度: 算法运行后对空间复杂度的定性描述。 数据结构课程重点关注的是算法的效率问题,因此,整
阅读全文
posted @ 2018-08-18 00:00
周伯通789
阅读(374)
推荐(0)
摘要:
当两个算法都能满足我们的需要时,我们在工程中更关心什么呢? 性价比(效率)是工程中最关注的算法附加特性。 怎么比较两个算法的效率呢? 1、事后统计法 比较不同算法对同一组输入数据的运行处理时间 缺陷: 为了获得不同算法的运行时间必须编写相应的程序 运行时间严重依赖硬件以及运行时的环境因素 算法测试数
阅读全文
posted @ 2018-08-16 20:50
周伯通789
阅读(185)
推荐(0)
摘要:
程序并不是越短越好。 数据结构静态的描述了数据元素之间的关系。 高效的程序需要在数据结构的基础上设计和选择算法 高效的程序包括:恰当的数据结构和合适的算法 算法是特定问题的求解步骤,在计算机中表现为指令的有限序列 算法是独立存在的一种解决问题的方法和思想 对于算法而言,语言并不重要,重要的是思想 算
阅读全文
posted @ 2018-08-16 00:00
周伯通789
阅读(170)
推荐(0)