摘要: # 静态库和动态库 `编译`: 对源文件做词法分析、语法分析、语义分析等操作,最终生成多个目标文件(二进制文件中会有一个main函数的标识符) `链接`: 对于各个目标文件中缺失的函数和变量的存储地址(后续简称“缺失的地址”),由链接器负责修复,并最终将所有的目标文件和链接库组织成一个可执行文件 ` 阅读全文
posted @ 2023-06-19 19:28 无形深空 阅读(34) 评论(0) 推荐(0) 编辑
摘要: # 设置C++17 用VC的话, 默认是不开启C++的, 设置一下 ![image](https://img2023.cnblogs.com/blog/2774839/202306/2774839-20230614220802758-1639179161.png) # 使用 ``` #include 阅读全文
posted @ 2023-06-14 22:09 无形深空 阅读(58) 评论(0) 推荐(0) 编辑
摘要: # 2 命名 **1 名副其实** 看到这个变量名就能够知道它 是什么, 为什么存在, 怎么使用 别害怕名称长, 长而具体的名称要比短而令人费解的名称要好. 让变量名能读出来 **2 不说废话** **3 类名应该是名词, 方法名是动词** # 3 函数 **函数应该短小**, 不应该长于一个屏幕 阅读全文
posted @ 2023-06-14 16:34 无形深空 阅读(40) 评论(0) 推荐(0) 编辑
摘要: # 是什么 try: 块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块. try后面括起来的代码被称为`保护代码` catch: 捕获到异常后要处理 throw: 抛出异常 - C++标准异常 ![image](https://img2023.cnblogs.com/blo 阅读全文
posted @ 2023-06-14 15:12 无形深空 阅读(5) 评论(0) 推荐(0) 编辑
摘要: # 是什么 编译前对源代码进行处理的指令 ``` #define:用于定义宏变量。 #include:用于将指定的头文件包含到当前文件中。 #ifdef / #ifndef:用于条件编译,根据某个宏是否已经被定义来决定编译哪一段代码。 #if / #elif / #else:用于条件编译,根据某个表 阅读全文
posted @ 2023-06-14 11:22 无形深空 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 1 名副其实 看到这个变量名就能够知道它 是什么, 为什么存在, 怎么使用 让变量名能读出来 2 不说废话 3 类名应该是名词, 方法名是动词 阅读全文
posted @ 2023-06-13 16:50 无形深空 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 这么几个容器看下来, 可以发现, 他们其实大同小异. #### :ocean:map是什么呢 我们要认识 `map` , 首先要认识 `pair` ``` Defined in header template struct pair; ``` 创建和访问(英文中两个都叫value) ``` pair 阅读全文
posted @ 2023-06-01 16:00 无形深空 阅读(50) 评论(0) 推荐(0) 编辑
摘要: # 是什么 左右指针维护一个滑动窗口 # 为什么 解决子串问题 有的滑动窗口大小固定, 但框架没必要修改, 这个框架最多判定2n次, 时间复杂度好点 # 怎么样 滑动窗口用[)区间更加方便 ## 框架 s是要处理的串, n是一些子串的描述(如果说排列, 窗口大小肯定是固定的) ``` void sl 阅读全文
posted @ 2023-05-31 09:39 无形深空 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 核心就是利用队列 Q: 如何区分下一层? A: 将当前队列中的所有节点进形扩散 # 框架 ```java // 计算从起点 start 到终点 target 的最近距离 int BFS(Node start, Node target) { Queue q; // 核心数据结构 Set visited 阅读全文
posted @ 2023-05-29 22:19 无形深空 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 前序位置的代码在刚刚进入一个二叉树节点的时候执行; 后序位置的代码在将要离开一个二叉树节点的时候执行; 中序位置的代码在一个二叉树节点左子树都遍历完,即将开始遍历右子树的时候执行。 void traverse(tree_node root) { if(root==null) return; //前序 阅读全文
posted @ 2023-05-17 12:28 无形深空 阅读(1) 评论(0) 推荐(0) 编辑