摘要:
这几天我翻了翻golang的提交记录,发现了一条很有意思的提交: "bc593ea" ,这个提交看似简单,但是引人深思。 commit讲了什么 commit的标题是“sync: document implementation of Once.Do”,显然是对文档做些补充,然而奇怪的是为什么要对某个功 阅读全文
摘要:
在golang中我们可以轻松地通过`==`来判断两个数组(array)是否相等,但遗憾的是slice并没有相关的运算符,当需要判断两个slice是否相等时我们只能另寻捷径了。 **从2023年开始你应该使用`golang.org/x/exp/slices.Equal`或者golang1.21的标准库 阅读全文
摘要:
有时候除了测量算法的具体性能指数,我们也会希望测试出算法的时间复杂度,以便我们对待测试的算法的性能有一个更加直观的了解。 测量时间复杂度 google benchmark已经为我们提供了类似的功能,而且使用相当简单。 具体的解释在后面,我们先来看几个例子,我们人为制造几个时间复杂度分别为 , , 的 阅读全文
摘要:
上一篇中我们初步体验了google benchmark的使用,在本文中我们将更进一步深入了解google benchmark的常用方法。 本文索引 向测试用例传递参数 简化多个类似测试用例的生成 使用参数生成器 向测试用例传递参数 之前我们的测试用例都只接受一个benchmark::State&类型 阅读全文
摘要:
通常,当我们开发Linux程序时有两种方案: 1. 在Linux上直接编写程序并进行运行测试和调试 2. 在Windows或Mac OS X上借助工具进行远程开发 虽然我自己是在Linux环境上直接进行开发的,但也有许多的人是在Windows环境上从事开发工作的,如果离开自己熟悉的系统到陌生的环境上 阅读全文
摘要:
在[前两篇文章](https://www.cnblogs.com/apocelipes/p/10758692.html)中我们详细介绍了使用智能指针构建二叉树并进行了层序遍历。 现在我们已经掌握了足够的前置知识,可以深入了解二叉搜索树的查找和删除了。 本文索引 二叉搜索树的查找 查找最小值和最大值 阅读全文
摘要:
"上一篇文章" 中我们提到了用智能指针构建二叉树来减轻我们的工作负担。今天我们来讨论下稍微复杂的情况下如何借助智能指针管理资源。 一般来说,当我们在程序中使用了智能指针后就无需亲自过问资源管理的问题了。然而随着数据结构和算法逐渐变得复杂,资源之间的关系也可能不再是简单的共享,比如下面的例子。 误用s 阅读全文
摘要:
二叉树是极为常见的数据结构,关于如何遍历其中元素的文章更是数不胜数。 然而大多数文章都是讲解的前序/中序/后序遍历,有关逐层打印元素的文章并不多,已有文章的讲解也较为晦涩读起来不得要领。本文将用形象的图片加上清晰的代码帮助你理解层序遍历的实现,同时我们使用现代c++提供的智能指针来简化树形数据结构的 阅读全文
摘要:
QLineEdit是使用频率最高的控件之一,当我们想获取用户输入时自然而然得会用到它。 通常我们会将QLineEdit的信号或其他控件的信号绑定至槽函数,然后获取并处理编辑器内的数据。你会觉得我们拿到的是第一手的“热乎着”的数据,所以理所当然地将过滤和验证逻辑都加入槽函数中,然而事实并非如此。那么数 阅读全文
摘要:
将view中的文本内容用自定义的颜色显示是一种十分常见的需求。今天我们稍微改变些“花样”。 本文索引 需求定义 需求分析 代码实现 思考题 需求定义 我们的需求很简单,现在有一些在view中的text内容需要使用彩色显示,而且不使用单一的一种颜色,而是多种颜色渐变实现的彩虹效果。 文字描述可能比较抽 阅读全文