11 2023 档案
摘要:重载的前缀自增运算符和后缀自增运算符有什么区别? 自增运算符"++"重载 C++ 是如何判断一个operator++函数是前缀自增运算符还是后缀自增运算符? 根据operator++(),()括号中的参数确定的。如果不填参数,就是前缀运算符;如果填入一个虚拟参数(如int),那就是后缀运算符。是前缀
阅读全文
摘要:动态规划中的经典算法题,和01背包不同的是,完全背包的物品想选几个选几个... 题目链接 Acwing 完全背包问题 题目思路 完全背包和01背包的区别在于:完全背包中的物品是可以随意数量的。对于一个物品,可以选0个,1个,...,直到选到装不下为止。 这里面存在一个转化: 只从结果来看,完全背包的
阅读全文
摘要:动态规划算法经典入门题,如何装东西,使得背包总价值最大? 题目链接 Acwing 01背包问题 解题思路 处理输入 输入 n, m,v[i], w[i] 等信息 算法核心 动态规划的思想是通过计算当前的值,这个值能被后来使用,最后得到解 属性:求最大价值 状态表示:只考虑前 i 件物品时,体积为 j
阅读全文
摘要:noexcept 问题 在数据库项目 CMU15445 中的 Project #2 中,有以下一个构造函数的实现: BasicPageGuard(BasicPageGuard &&that) noexcept; 这里为什么选择加 noexcept ? 解释 关键字 noexcept 在C++中用来指
阅读全文
摘要:## `std::move()` 在C++中,std::move() 用于将对象转换为右值引用。 关于左值、左值引用、右值、右值引用 左值是一个表示数据的表达式(比如变量名或者解引用的指针),程序可以获取其地址 传统的C++引用,即是左值引用。 C++11新增右值引用,用 && 表示。 右值是可出现
阅读全文
摘要:C++内联函数 Inline Functions 内联函数和常规函数的区别 内联函数是C++为提高程序运行速度所做的一项改进。C++中的内联函数提供了一种告诉编译器尝试在每个调用点展开函数体的方法,以减少函数调用的开销。 具体如图: 什么时候使用内联函数更合适 小型函数:如果函数体非常小(如只有几行
阅读全文
摘要:PROJECT #1 - BUFFER POOL ASSIGNMENT 翻译 点击查看 Task #2 - Disk Scheduler 翻译 Task #2 - Disk Scheduler (磁盘调度程序) 该组件负责调度 DiskManager 上的读写操作。实现 disk_scheduler
阅读全文