摘要: 1. 二叉树 1.1 概念 二叉树是n个有限元素(结点)的集合,由根结点及两个互不相交的左、右子二叉树组成,且左节点中的数据始终小于右节点。 1.2 形态 二叉树是递归形成的,它的形态可以概括为五种基本形态: (1)空二叉树; (2)只有一个根节点的二叉树; (3)只有左结点的二叉树; (4)只有右 阅读全文
posted @ 2020-09-17 22:11 水墨雍和 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 算法思想: 快速排序法的核心思想是:分治思想。即在数组中先确定一个基准数,通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的数据均比另一部分的基准数小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 实现原理: (1)选取第一个数作为基准数,设置双指针,初始化left=0, rig 阅读全文
posted @ 2020-09-13 21:06 水墨雍和 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-09-08 15:47 水墨雍和 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 大型程序往往会使用多个独立开发的库,这些库又会定义大量全局名字,如类、函数和模板等。当应用程序用到多个供应商提供的库时,不可避免地会发生某些名字相互冲突的情况,多个库将名字放置在全局命名空间( 全局命名空间就是工程中没有在特定命名空间中定义的各类名字的集合,一般我们写程序时不加命名空间时,就是在全局 阅读全文
posted @ 2020-08-02 15:06 水墨雍和 阅读(109) 评论(0) 推荐(1) 编辑
摘要: #include <iostream> using namespace std; class MyArray { public: MyArray(int len); ~MyArray(); public: int & operator[](int index); int getLen(); clas 阅读全文
posted @ 2020-06-28 14:51 水墨雍和 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 为了不让程序由于错误而中断,C++提供了异常处理机制。 简单的说,异常的抛出与捕捉的步骤如下: (1)在底层函数throw异常对象; (2)将可能抛出异常的程序段嵌在try块之中; (3) 紧随try块的catch块分别对不同类型的异常对象作出处理; (4)如果匹配的处理器未找到,则运行函数term 阅读全文
posted @ 2020-06-23 15:53 水墨雍和 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 分析:容器类中要存放数组,而且数组类型不确定,所以应采用泛型编程,容器类要用到下标[]、赋值=、以及输出<<,所以应对这几个操作符进行重载。 第一步:模板类的框架搭建 #pragma once #include <iostream> using namespace std; template<typ 阅读全文
posted @ 2020-06-08 13:57 水墨雍和 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 模板类可以按以下三种方式编码: 第一种:所有的类模板函数写在类的内部 第二种:所有的类模板函数写在类的外部,在一个cpp中 第三种:所有的类模板函数写在类的外部,在不同的.h和.cpp中 采用不同的方式对应的语法不一样。 第一种编码方式最简单,由于类模板函数在类中,所以函数头不再需要声明为模板函数, 阅读全文
posted @ 2020-06-05 10:33 水墨雍和 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 1、联编是指一个程序模块、代码之间互相关联的过程。 2、静态联编(static binding),是程序的匹配、连接在编译阶段实现,也称为早期匹配。 重载函数使用静态联编。 3、动态联编是指程序联编推迟到运行时进行,所以又称为晚期联编(迟绑定)。 switch 语句和 if 语句是动态联编的例子。 阅读全文
posted @ 2020-05-06 11:02 水墨雍和 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 条件: (1)派生类含有基类的重写函数; (2)基类对象有派生类对象初始化(指针,引用,赋值); 结果: 基类对象调用重写函数时只调用基类函数 结论: 如何让编译器知道基类对象的真正类型,从而调用对应类型的成员,由此产生了多态的需求 , 即在重写函数前加virtual. #include <iost 阅读全文
posted @ 2020-05-06 10:19 水墨雍和 阅读(208) 评论(0) 推荐(0) 编辑