摘要: 写了一个 infix to postfix 的递归下降 parser,但感觉写得好长,也不知道怎么回事。 #include <algorithm> #include <string_view> #include <stdexcept> class InfixToPostfixParser { pub 阅读全文
posted @ 2020-09-01 18:09 seideun 阅读(187) 评论(0) 推荐(0)
摘要: 这里的 Bencher 指的是 C++ 代码性能测试工具。 下面是一点儿碎碎念 真的,C++ 要是有统一的包管理工具就好了。现在不但库的使用比较杂,还没有什么好的教材,真有一种旧时候手艺人的风格,大概得有个师父带着才能高效。如果我在写 Rust 的话,就直接上 Criterion 了,还管什么自己造 阅读全文
posted @ 2020-08-20 17:57 seideun 阅读(132) 评论(0) 推荐(0)
摘要: 上次做的 Timer 功能有点杂糅,我又弄了个 MiniTimer(本来叫 SimpleTimer 但想了想还是 MiniTimer 符合它的定位)。 class MiniTimer { // NOLINT(cppcoreguidelines-pro-type-member-init) public 阅读全文
posted @ 2020-08-20 11:32 seideun 阅读(209) 评论(1) 推荐(0)
摘要: The Fundamental Software Engineering Rule: Any software engineering problems can be solved by adding another layer. 这篇文章是我学习 C++ type erasure 的笔记,其中主要 阅读全文
posted @ 2020-08-19 18:33 seideun 阅读(503) 评论(0) 推荐(0)
摘要: 一直以来,对 C++ 的模板和模板元编程,很多人不是视为洪水猛兽,就是当作无用鸡肋。即使是不那么偏激的,也说不定会以为这是只有库开发者才需要去掌握的「独门神功」。然而,当我真正去学习的时候,我发现,或许早期的 C++ 模板还有很多漏洞,但在 C17 以后,模板已经成为了一套相对自然易学的工具。为了梳 阅读全文
posted @ 2020-08-14 17:21 seideun 阅读(359) 评论(0) 推荐(0)
摘要: 我打算积累一些算法。不过刚一动手就遇到了大麻烦,在 Windows 上配置一个简单的 Benchmark 似乎有点困难。Google Benchmark 我观察了半天也没研究明白怎么安,于是想了想,不如自己写一个简易 Timer,作为一切的起点! Timer 的功能 首先,Timer 有开始计时和终 阅读全文
posted @ 2020-08-14 05:35 seideun 阅读(187) 评论(0) 推荐(0)
摘要: 迭代 (iteration) 本意是「重复」,但现在更多泛指「一小步一小步地更新」。迭代,就是不停地重复一个短小的开发流程。在这种看似简单的模式里,蕴含着巨大的力量。 阅读全文
posted @ 2020-08-08 00:20 seideun 阅读(843) 评论(0) 推荐(0)
摘要: 在关于引用的话题上,C++ 与 Rust 选择了不同的策略来方便编写代码。以前我只会写一点 C++,只有片面的认识。现在我在 Rust 中遇到了不一样的设计,由此深化了对个中选择的理解。 现在的问题是: 要不要给函数调用的参数加上自动引用与解引用的功能? 要解决这个问题,先概览一下 Rust 和 C 阅读全文
posted @ 2020-08-06 18:47 seideun 阅读(1246) 评论(0) 推荐(0)
摘要: 最近学的很多东西,都有不少共通的想法在里面。其中一个重要的思想就是 lazy。我最开始是在函数式语言、高性能矩阵运算等方面看到这个术语,然后又在 Rust 中见识了 iterator 中应用的 lazy 思想。后来,我又学习了线段树中的 lazy 标记等。总之,它们的共通点就是避免无用的计算,等待更 阅读全文
posted @ 2020-08-06 18:45 seideun 阅读(144) 评论(0) 推荐(0)