01.数据结构与算法概述 在我们日常生活中我们已经在不知不觉中学会了许多算法,并习惯将它们应用到日常生活中了。 例一:查阅字典。在字典里,每个汉字都对应一个拼音,而字典是按照拼音字母顺序排列的。假设我们需要查找一个拼音首字母为 r 的字。 翻开字典约一半的页数,查看该页的首字母是什么,假设首字母为 m。 由于在拼音字母表中 r 位于 m 之后,所以排除字典前半部分,查找范围缩小到后半部分。 不断重复步骤 1. 和 步骤 2023-09-21 #C++ #数据结构 #算法
02.复杂度分析 在算法设计中,我们先后追求以下两个层面的目标。 找到问题解法:算法需要在规定的输入范围内,可靠地求得问题的正确解。 寻求最优解法:同一个问题可能存在多种解法,我们希望找到尽可能高效的算法。 也就是说,在能够解决问题的前提下,算法效率已成为衡量算法优劣的主要评价指标,它包括以下两个维度。 时间效率:算法运行速度的快慢。 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省 2023-09-21 #algorithm #analyze
01.理解 C++ 内核 本节内容分为三部分: 掌握进程虚拟地址空间区域划分 从指令角度掌握函数调用堆栈详细过程 从编译器角度理解C++代码的编译、链接 通过了解底层基础,了解 C++ 的如何运行。 1. 掌握进程虚拟地址空间区域划分代码: 1234567891011121314151617181920212223#include <iostream>using namespace std;int gdat 2023-09-21 #C++
02.C++ 基础精讲 本节分为 5 大类: 形参带默认值的函数 内联函数inline 详解函数重载 const 深入应用 深入理解 C++ 的 new 和 delete 1. 形参带默认值的函数在 C++ 中,声明一个函数时,可以为函数的参数指定默认值。当调用有默认参数值的函数时,可以不写出参数,这时就相当于以默认值作为参数调用该函数。 注意事项: 在有函数声明(原型)时,默认参数可以放在函数声明或定义中,但是只 2023-09-21 #C++
03.C++ 面向对象 本节分为 7 大类: 类和对象、this 指针 构造函数和析构函数 深拷贝和浅拷贝 类和对象代码应用实践 构造函数的初始化列表 类的各种成员方法及区别 指向类成员的指针 1. 类和对象、this 指针C 语言是面向过程的,关注的是过程。分析出求解问题的步骤,通过函数调用逐步解决问题。 C++ 是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 1. 类的引入C语 2023-09-21 #C++
05.C++ 运算符重载 本节分为七个部分: 学习复数类 Complex 模拟实现 C++ 的 string 类 string 字符串对象的迭代器 vector 容器的迭代器 iterator 实现 什么是容器的迭代器失效问题 new 和 delete 重载实现的对象池 深入理解 new 和 delete 的原理 什么是运算符重载 运算符重载实质还是一个 函数。通过重载运算符,可以让类在一些场景下使用起来更加方便。 语 2023-09-21 #C++
06.C++ 继承与多态 本节分为十部分: 继承的基本意义 派生类的构造过程 重载、覆盖、隐藏 虚函数、静态绑定和动态绑定 虚析构函数 理解多态是什么 理解抽象类 理解虚基类和虚继承 菱形继承问题 C++ 的 四种类型转换 1. 继承的基本意义继承的本质: 代码的复用,实现多态的基础。 关系: 组合:a part of… 一部分的关系 继承:a kind of… 一种的关系 继承方式和访问限定罗列: 2023-09-21 #C++
00-1.C++ 基本语法 C++ 初识 数据类型 运算符 程序流程结构 数组 函数 指针 结构体 C++ 初识第一个 C++ 程序C++ 程序的编写步骤: 创建项目 创建文件 编写代码 运行程序 12345678910#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>using namespace std;int main() 2023-09-21 #C++
12.C++ 设计模式 本节分为六部分: 单例模式 工厂模式 代理模式 装饰器模式 适配器模式 观察者模式 1. 单例模式数学与逻辑学 中,singleton 定义为:有且仅有一个元素的集合。 单例模式最初的定义出现在《设计模式》(艾迪生维斯理,1994):保证一个类仅有一个实例,并提供一个访问它的全局访问点。 动机对于系统中的某些类来说,只有一个实例很重要: 例如:一个系统中可以存在多个打印任务,但是只能有一个正在 2023-09-21 #C++ #设计模式