摘要:
静态库和动态库 编译: 对源文件做词法分析、语法分析、语义分析等操作,最终生成多个目标文件(二进制文件中会有一个main函数的标识符) 链接: 对于各个目标文件中缺失的函数和变量的存储地址(后续简称“缺失的地址”),由链接器负责修复,并最终将所有的目标文件和链接库组织成一个可执行文件 库文件重复使用 阅读全文
摘要:
# 设置C++17 用VC的话, 默认是不开启C++的, 设置一下  # 使用 ``` #include 阅读全文
摘要:
# 2 命名 **1 名副其实** 看到这个变量名就能够知道它 是什么, 为什么存在, 怎么使用 别害怕名称长, 长而具体的名称要比短而令人费解的名称要好. 让变量名能读出来 **2 不说废话** **3 类名应该是名词, 方法名是动词** # 3 函数 **函数应该短小**, 不应该长于一个屏幕 阅读全文
摘要:
# 是什么 try: 块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块. try后面括起来的代码被称为`保护代码` catch: 捕获到异常后要处理 throw: 抛出异常 - C++标准异常  ``` pair 阅读全文
摘要:
# 是什么 左右指针维护一个滑动窗口 # 为什么 解决子串问题 有的滑动窗口大小固定, 但框架没必要修改, 这个框架最多判定2n次, 时间复杂度好点 # 怎么样 滑动窗口用[)区间更加方便 ## 框架 s是要处理的串, n是一些子串的描述(如果说排列, 窗口大小肯定是固定的) ``` void sl 阅读全文
摘要:
核心就是利用队列 Q: 如何区分下一层? A: 将当前队列中的所有节点进形扩散 # 框架 ```java // 计算从起点 start 到终点 target 的最近距离 int BFS(Node start, Node target) { Queue q; // 核心数据结构 Set visited 阅读全文
摘要:
前序位置的代码在刚刚进入一个二叉树节点的时候执行; 后序位置的代码在将要离开一个二叉树节点的时候执行; 中序位置的代码在一个二叉树节点左子树都遍历完,即将开始遍历右子树的时候执行。 void traverse(tree_node root) { if(root==null) return; //前序 阅读全文