CCF GESP · C++ · 一至八级
C++ 一至八级大纲
点击标签切换级别 · 共 8 个级别
C++ 一级知识体系
- 计算机的软硬件组成
- CPU · 内存 · I/O 设备
- 操作系统基本概念与常见操作
- Windows · Linux
- 计算机发展历程
- 计算机在现代社会的常见应用
- 熟悉 Dev C++ 等 IDE 的使用
- 创建 / 编辑 / 保存文件
- 编译与解释的概念
- 程序调试基础
- 顺序结构
- 分支结构
- if · if-else · switch · 三目运算
- 循环结构
- for · while · do-while
- continue · break
- 输入语句
- cin · scanf
- 输出语句
- cout · printf
- 赋值语句 · 复合语句
- 注释 · 调试的概念
- 标识符 · 关键字
- 常量 · 变量 · 表达式
- 变量的命名 · 定义 · 初始化 · 赋值
- 变量的自加(++)与自减(--)
- 算术运算
- + · - · * · / · 整除 · % 求余
- 关系运算
- > · >= · < · <= · == · !=
- 逻辑运算
- && · || · !
- 三目运算 · 自增自减运算
- 整数型
- int · long long
- 实数型(浮点型)
- float · double
- 字符型
- char
- 布尔型
- bool(true / false)
C++ 二级知识体系
- 存储器分类
- RAM(随机存储)· ROM(只读)· Cache(高速缓存)
- 计算机网络分类
- WAN 广域网 · MAN 城域网 · LAN 局域网
- 网络层级结构
- TCP/IP 四层模型 · OSI 七层模型
- IP 地址及子网划分
- 语言分类
- 机器语言 · 汇编语言 · 高级语言
- 常见高级语言
- C++ · Python · Java 等
- 流程图的概念与基本符号
- 绘制流程图的方法
- 用流程图描述三种基本结构
- 顺序 · 分支 · 循环
- ASCII 编码原理
- 常用字符编码(必记)
- 空格:32 · '0':48 · 'A':65 · 'a':97
- 字符与 ASCII 码相互转换
- 强制类型转换
- (int)x · (double)x 等
- 隐式类型转换
- 低精度向高精度自动转换
- if 语句嵌套
- if...else 语句嵌套
- switch 语句嵌套
- while 循环嵌套
- do...while 循环嵌套
- for 循环嵌套
- 三种循环相互嵌套
- abs() — 绝对值
- sqrt() — 平方根
- max() / min() — 最大/最小值
- rand() / srand() — 随机数
C++ 三级知识体系
- 二进制(Binary)
- 八进制(Octal)
- 十进制(Decimal)
- 十六进制(Hexadecimal)
- 四种进制之间相互转换
- 与 & (AND)
- 或 | (OR)
- 非 ~ (NOT)
- 异或 ^ (XOR)
- 左移 << · 右移 >>
- 左移=×2 · 右移=÷2
- 算法的概念与特性
- 自然语言描述算法
- 流程图描述算法
- 伪代码描述算法
- 枚举法(暴力枚举)
- 模拟法
- 数组的定义与初始化
- 数组的访问与遍历
- 数组与循环结合使用
- 不包括变长数组
- 字符串基本概念
- 大小写转换
- 字符串搜索
- 字符串分割
- 字符串替换
C++ 四级知识体系
- 指针类型的概念
- 指针变量的定义
- int* p;
- 指针的赋值
- p = &x;
- 指针的解引用
- *p 访问所指向的值
- 二维数组的定义与使用
- int a[3][4];
- 多维数组的扩展
- 内存中的行优先存储
- 不包括变长数组
- 结构体定义与使用
- 结构体数组
- 结构体指针
- 结构体嵌套结构体
- 结构体作为函数参数
- 结构体中 const 的使用
- 函数的定义 · 调用 · 声明
- 形参与实参
- 全局作用域 · 局部作用域
- 参数传递方式
- 值传递 · 引用传递 · 指针传递
- 递推算法基本思想
- 递推关系式的推导
- 如斐波那契 f(n)=f(n-1)+f(n-2)
- 递推问题的求解
- 冒泡排序
- 插入排序
- 选择排序
- 排序稳定性 · 时间 / 空间复杂度
- 内排序与外排序概念
- 简单算法复杂度估算
- 多项式复杂度 · 指数复杂度
- 文件重定向
- 读操作(ifstream)
- 写操作(ofstream)
- 读写操作(fstream)
- 异常处理机制
- try / catch / throw
- 常用异常处理方法
C++ 五级知识体系
- 素数与合数
- 最大公约数 (GCD) · 最小公倍数 (LCM)
- 同余与模运算
- 约数与倍数
- 质因数分解
- 奇偶性
- 欧几里得算法(辗转相除法)
- 唯一分解定理
- 埃氏筛法 · 线性筛法(欧拉筛)
- 含多项式的算法复杂度
- O(1) · O(n) · O(n²) · O(n³)
- 含对数的算法复杂度
- O(log n) · O(n log n)
- 数组模拟高精度加法
- 数组模拟高精度减法
- 数组模拟高精度乘法
- 数组模拟高精度除法
- 单链表
- 双链表
- 循环链表
- 基本操作
- 创建 · 插入 · 删除 · 遍历 · 查找
- 二分查找算法
- 在有序数组中定位目标值
- 二分答案算法(二分枚举法)
- 对答案范围进行二分
- 递归的概念与终止条件
- 递归的时间 · 空间复杂度分析
- 递归的优化策略
- 记忆化 · 尾递归
- 分治算法的基本原理
- 归并排序
- 稳定 · O(n log n)
- 快速排序
- 平均 O(n log n) · 最坏 O(n²)
- 贪心算法的基本原理
- 最优子结构
- 贪心与动态规划的区别
C++ 六级知识体系
- 树的基本概念
- 根 · 叶 · 深度 · 高度
- 哈夫曼树
- 最优二叉树 · 构建方法
- 完全二叉树
- 二叉排序树(BST)
- 插入 · 查找 · 删除
- 哈夫曼编码
- 变长编码 · 前缀码性质
- 格雷编码
- 相邻码只有一位不同
- 深度优先搜索 DFS
- 用栈实现 · 递归实现
- 宽度优先搜索 BFS
- 用队列实现
- 二叉树的搜索算法
- 前序 · 中序 · 后序 · 层序遍历
- 一维动态规划
- 状态定义 · 转移方程 · 初始化
- 简单背包问题
- 0/1 背包 · 内层倒序遍历
- 面向对象思想
- 类的创建与初始化
- 封装
- 数据隐藏 · public/private
- 继承
- 基类 · 派生类
- 多态
- 虚函数 · 运行时多态
- 栈(Stack)
- LIFO · push / pop / top
- 队列(Queue)
- FIFO · push / pop / front
- 循环队列
- front / rear 指针 · 判空判满
C++ 七级知识体系
- 三角函数
- sin(x) · cos(x) · tan(x)
- 对数函数
- log10(x) · log2(x)
- 指数函数
- exp(x) · pow(x, y)
- 二维动态规划
- 动态规划最值优化
- 区间动态规划
- 最长上升子序列(LIS)
- 最长公共子序列(LCS)
- 滚动数组降低空间复杂度
- 图的概念
- 有向图 · 无向图 · 节点度
- 图的存储结构
- 邻接矩阵 · 邻接表
- 图的广度优先遍历 BFS
- 图的深度优先遍历 DFS
- 泛洪算法(Flood Fill)
- 连通区域染色 · 岛屿计数
- 哈希表的概念
- 哈希函数
- 冲突处理
- 链地址法 · 开放地址法
- 哈希表的应用
- unordered_map · unordered_set
C++ 八级知识体系
- 加法原理
- 分类计数,各类互斥
- 乘法原理
- 分步计数,各步独立
- 排列(Permutation)
- 有序选取 · P(n,r) = n!/(n-r)!
- 组合(Combination)
- 无序选取 · C(n,r) = n!/(r!(n-r)!)
- 排列组合编程实现
- 杨辉三角的定义(帕斯卡三角形)
- C(n,r) = C(n-1,r-1) + C(n-1,r)
- 杨辉三角的编程实现
- 与组合数的关系
- 倍增法的概念
- 时间复杂度 O(log n)
- 应用场景
- 快速幂 · LCA 等
- 一元一次方程求解
- 二元一次方程组求解
- 基本图形面积
- 三角形 · 圆形 · 长方形
- (限初中数学范围)
- 最小生成树
- Kruskal 算法 · Prim 算法
- 单源最短路径
- Dijkstra 算法
- 多源最短路径
- Floyd 算法
- 图论算法综合应用与问题求解
- 时间复杂度分析方法
- 空间复杂度分析方法
- 各类算法的复杂度
- 排序 · 查找 · 遍历 · 搜索 · DP
- 不同算法的差异分析
- 算法优化的一般方法
- 用数学知识辅助优化
- 等差数列求和公式
- 等比数列求和公式