摘要:
后缀自动机(SAM) 为了方便,我们做出如下约定: “后缀自动机” (Suffix Automaton) 在后文中简称为 SAM 。 记 \(|S|\) 为字符串 \(S\) 的长度。 记 \(\sum\) 为字符集,记 \(|\sum|\) 为字符集大小。 关于 SAM 的复杂度证明在 OI Wi 阅读全文
摘要:
飞机大战开发 Contents 游戏的框架流程 如何实现复用和扩展游戏 使用数据结构存储对象 (工具)使用 CMake 快速编译多文件程序 一些 Tips 游戏的框架流程 游戏不同于一般的程序,用户输入资料,程序给出相应。我们玩的游戏大部分都具有如下两个特性: 实时性 游戏一般具有动态更新的场景,这 阅读全文
摘要:
EasyX 图形库与游戏开发 这份笔记来源于童晶编写的 《C++ 游戏趣味编程》一书中关于 EasyX 图形库使用的部分。 笔记中函数参数为 float 并不代表函数原型也是 float,只是为了说明它可以接受整数或者小数。 控制小球下落 #include <graphics.h> // EasyX 阅读全文
摘要:
什么是 GDB GDB 是 GNU 项目下的一个调试器,它允许在程序运行的时候检查程序内部到底发生了什么。 GDB 可以做到以下事情: 开始程序,设置观测参数。 在特殊情况下暂停程序执行。 当程序停止执行的时候,检查程序状态。 修改程序,在修复某个 bug 后可以继续进行测试,寻找其他的 bug。 阅读全文
摘要:
# This is a CMakeLists.txt #[[ This is a CMakeLists.txt This is a CMakeLists.txt This is a CMakeLists.txt * CMake 生成的 make 文件以及一些其他的乱七八糟的文件都在终端当前对应的目录 阅读全文
摘要:
异常抛出与捕获 在程序运行的过程中,因为各种各样的原因,可能会出现各种各样的问题。 如果一个大型项目遇到一个简单的问题就崩掉的话,将会造成一定的损失。所以让程序变得更加强壮,不容易崩掉就变得很重要。 当程序执行到某一步的时候,我们通过特判发现了问题怎么办? int a[20]; void f(int 阅读全文
摘要:
引入 现在要实现一个比较函数 cmp,要求实现 int,double,string(按字典序)的大小比较。 一般来讲,常用的做法是写 4 个重载函数,分别对应 4 种不同的实参类型。 不想这么麻烦?似乎可以使用无类型指针强行对这四种类型做适配。 但是无类型指针每次调用之前必须显式地告诉它数据类型,但 阅读全文
摘要:
期中复习串讲 参与投票:21 人 top3:函数指针相关(18)函数嵌套(14)内联/重载函数(13) 我们着重讲这三部分,有一半人存在疑点,剩下的几个部分也会提一嘴,帮助大家复习一下。 函数指针相关 函数地址 函数和变量一样,都要占用内存空间。 既然占用了内存空间,存函数的那片内存的地址自然就成为 阅读全文
摘要:
运算符重载的意义是使得程序员可以重新定义一个运算符的行为。 基本规则 可以被重载的运算符 程序员几乎可以重载 C++ 的所有运算符,包括以下这些: + - * / % ^ & | ~ = < > += -= *= /= %= ^= &= |= << >> <<= >>= == != <= >= ! 阅读全文
摘要:
代表「静态」的关键字是 static ,它拥有多种含义。 用于声明某个变量是持久存储的(类似于全局变量)。 用于限制某个变量/函数不能从其他文件中访问。 用于声明一个成员变量/函数是一个全局变量/函数(所有对象共有)。 接下来我们分别对这几种情况来做讨论。 用于持久存储的声明与全局变量 将一个本地变 阅读全文
摘要:
拷贝构造由拷贝构造函数完成,发生在两个对象之间的赋值操作的时候。 拷贝构造是什么 引例 我们先来看一段代码和它的运行结果: /* In test91.h */ #ifndef TEST91_H_ #define TEST91_H_ #include <iostream> using namespac 阅读全文