ARTS打卡 第十九周 这周算法题目是这个 树上的前缀和,是十分不错的题目,推荐一下想练习前缀和的同学做 本周的文章推荐这个 讲的是有关并发编程的一些知识点 上周的打卡我给鸽掉了,这周的内容也比较少。因为最近在做CMU的15445。不过好消息是现在已经做完了。所以下周将开始恢复文章的更新 下周见
ARTS打卡 第十九周 这周算法题目是这个 树上的前缀和,是十分不错的题目,推荐一下想练习前缀和的同学做 本周的文章推荐这个 讲的是有关并发编程的一些知识点 上周的打卡我给鸽掉了,这周的内容也比较少。因为最近在做CMU的15445。不过好消息是现在已经做完了。所以下周将开始恢复文章的更新 下周见
ARTS打卡 第十八周 首先是算法,这周有一个dfs+字典树的题,我感觉是一个比较不错的题,用来训练进阶的dfs和字典树很棒 然后推荐一个LRU的题,用链表和哈系表实现LRU缓存,题目 因为我这周在做cmu数据库的作业,所以正好做一下LRU的题 文章的话,上周我写了C++异常实现的一个总结。 这里还有一个有关热重载的文章,就是用动态链接来实现,如果看过程序员的自我修养的同学应该会很熟悉,dlopen和dlclose等函数 这周主要的实现都在读数据库的书,B+树的作业也马上就要开始了,这周总体感觉有点迷,下周继续加油
Daily C/C++ C++异常机制 参考文章 这篇文章需要一些前置的知识,是函数栈相关的。推荐先去看看《深入理解计算机系统》和《程序员的自我修养》 首先要明白,我们在调用函数的时候,会有一个抽象的概念叫栈帧。里面储存了我们在调用函数期间需要用到的各种信息,栈帧存储在栈中,递归调用的层数越多,栈帧也就会叠的越多,就有可能导致栈溢出,即stackoverflow 栈帧中储存的信息主要有函数的返回地址,函数参数,函数的局部变量等(其实如果观察过汇编的同学可以发现,我们在使用栈的过程中一般都会有一个rbp的寄存器,用来…
Daily C/C++ Dependent Names 今天这个文章会比较短,提一下我今天写代码时遇到的一个小问题 先看这样一段代码 template<typename T> class A { protected: int number; } template<typename T> class B: public A<T> { public: void foo() { number = 10; } } 这段代码在编译的时候是会报错的 编译器会提示你,在B这个类中,找不到num…
ARTS打卡 第十七周 这周本来想准备kickstart的,但是也不知道怎么回事一周就过去了 好在还是有点进展的,这里来总结一下 这周虽然困难题多,但是总体来说也不算非常困难。有两道题要推荐一下 题目,首先是这个,这道题我个人觉得还是比较难的。看到数据范围就可以想到基本上是跟位运算有关的了。他是用dp先预处理,预处理出每个子树的答案,然后再根据n的二进制位将n拆分成若干个子树的和,最终得到结果。 主要是要对字典树有一定的感觉 题目,这道题是一个栈的拓展,一般看到括号相关的就要考虑栈了。 我们用一个栈维护左括号的位置…
Daily C/C++ Learn By Discovering ——— 探究partial_sum 今天这个文章可能会比较长,因为这里我想整理一下我在学习新东西的过程,如果在这个过程中能够总结一些相关的方法论,或者能够给他人带来启发就更好了。 学习这个东西,我个人还是感觉要有兴趣,有探索的欲望,这样才能不断的向深处挖掘。就像是树盘跟一样,一边向深处挖掘,一边去学习和总结在过程中遇到的一些小的点,这样不断积累,如果有一天,我们有幸读到了一些较为系统性的书,帮助我们整理之前的知识,就可以将这些知识系统化,从而获得比较…
ARTS打卡 第十六周 这周有点晚了,主要原因是周日给忘了,现在赶紧补上 首先还是算法,这周的周赛有点不合我的口味,做的稀烂。脑筋急转弯的题这里就不给推荐了 推荐一个随机相关的题吧 题目链接 这方面我学的也不是很好,就是感觉这类题也算是一个新思路。主要还是设计到概率论的知识 有关文章的话,其实我基本上都贴在了我之前写的文章的参考链接中 这里就再贴一下几个比较不错的文章 链接,这个是有关返回值的讨论 链接,这个是有关前置运算符和后置运算符返回值的讨论 用来在C++上查漏补缺还是很不错的 上周貌似没怎么看书,是效率比较…
Daily C/C++ Y组合子 参考文章 参考文章 这篇文章说实话我也是照葫芦画瓢,我还没有去看Y组合子的那篇官方的文章,这里只是给出一些用于实践上的理解 首先就是定义,Y组合子是一个特殊的高阶函数 y(f) = f(y(f)) 看起来定义蛮奇怪的,f和y都是参数为函数,返回值为函数的一个函数 当我们尝试展开的时候会发现,这个函数是无限展开的,我们正是利用了这个特点,来帮助我们写出递归函数 更准确的说,是lambda中的递归 因为我们都知道,lambda表达式是没名字的,所以我们无法在lambda表达式内部去调用…
Daily C/C++ output_container解析 这篇文章是来解析一下吴咏炜老师的output_container 代码 我这里也给出我的一个例子,用来帮助理解 int main() { std::pair p{1, 2}; std::cout << p << std::endl; std::vector vec{1, 2, 3, 4, 5}; std::cout << vec << std::endl; std::unordered_map<int…
Daily C/C++ 编译期计算 今天这篇文章是有关模板元编程,也相当与是学习吴咏炜老师的课的一个笔记,参考文章在这里链接 首先就是一个结论,C++模板是图灵完全的,也就是说通过C++的模板,你可以在编译期间模拟一个完整的图灵机 先上一段代码 template <int n> struct factorial { static const int value = n * factorial<n - 1>::value; }; template <> struct factori…