Fork me on GitHub
摘要:在 "上一篇文章" 中我们介绍了使用vs2019作为远程Linux系统的开发环境,但我们是创建的传统的sln项目,而对于Linux开发者来说以autotools或是cmake进行项目结构的组织更为简单直观,也符合在Linux环境上的习惯。 autotools是较为古老的也是使用最为广泛的构建系统,你 阅读全文
posted @ 2019-08-29 20:23 apocelipes 阅读 (3143) 评论 (4) 编辑
摘要:最近在重温《c++程序设计新思维》这本经典著作,感慨颇多。由于成书较早,书中很多元编程的例子使用c++98实现的。而如今c++20即将带着concept,Ranges等新特性一同到来,不得不说光阴荏苒。在c++11之后,得益于新标准很多元编程的复杂技巧能被简化了,STL也提供了诸如 TypeList 阅读全文
posted @ 2019-08-02 17:07 apocelipes 阅读 (203) 评论 (0) 编辑
摘要:这几天我翻了翻golang的提交记录,发现了一条很有意思的提交: "bc593ea" ,这个提交看似简单,但是引人深思。 commit讲了什么 commit的标题是“sync: document implementation of Once.Do”,显然是对文档做些补充,然而奇怪的是为什么要对某个功 阅读全文
posted @ 2019-07-06 19:40 apocelipes 阅读 (613) 评论 (0) 编辑
摘要:在golang中我们可以轻松地通过 来判断两个数组(array)是否相等,但遗憾的是slice并没有相关的运算符,当需要判断两个slice是否相等时我们只能另寻捷径了。 slice相等的定义 我们选择最常见的需求,也就是当两个slice的类型和长度相同,且相等下标的值也是相等的,比如: 上述代码中 阅读全文
posted @ 2019-07-01 21:03 apocelipes 阅读 (338) 评论 (0) 编辑
摘要:有时候除了测量算法的具体性能指数,我们也会希望测试出算法的时间复杂度,以便我们对待测试的算法的性能有一个更加直观的了解。 测量时间复杂度 google benchmark已经为我们提供了类似的功能,而且使用相当简单。 具体的解释在后面,我们先来看几个例子,我们人为制造几个时间复杂度分别为 , , 的 阅读全文
posted @ 2019-06-30 01:45 apocelipes 阅读 (199) 评论 (0) 编辑
摘要:"上一篇" 中我们初步体验了google benchmark的使用,在本文中我们将更进一步深入了解google benchmark的常用方法。 本文索引 向测试用例传递参数 简化多个类似测试用例的生成 使用参数生成器 向测试用例传递参数 之前我们的测试用例都只接受一个 类型的参数,如果我们需要给测试 阅读全文
posted @ 2019-06-22 02:34 apocelipes 阅读 (264) 评论 (0) 编辑
摘要:通常,当我们开发Linux程序时有两种方案: 1. 在Linux上直接编写程序并进行运行测试和调试 2. 在Windows或Mac OS X上借助工具进行远程开发 虽然我自己是在Linux环境上直接进行开发的,但也有许多的人是在Windows环境上从事开发工作的,如果离开自己熟悉的系统到陌生的环境上 阅读全文
posted @ 2019-05-21 14:07 apocelipes 阅读 (6191) 评论 (19) 编辑
摘要:在 "前两篇文章" 中我们详细介绍了使用智能指针构建二叉树并进行了层序遍历。 现在我们已经掌握了足够的前置知识,可以深入了解二叉搜索树的查找和删除了。 本文索引 二叉搜索树的查找 查找最小值和最大值 查找特定值 删除节点 测试 二叉搜索树的查找 查找将分为两部分,最值查找和特定值查找。 本章中使用的 阅读全文
posted @ 2019-05-11 16:54 apocelipes 阅读 (152) 评论 (0) 编辑
摘要:"上一篇文章" 中我们提到了用智能指针构建二叉树来减轻我们的工作负担。今天我们来讨论下稍微复杂的情况下如何借助智能指针管理资源。 一般来说,当我们在程序中使用了智能指针后就无需亲自过问资源管理的问题了。然而随着数据结构和算法逐渐变得复杂,资源之间的关系也可能不再是简单的共享,比如下面的例子。 误用s 阅读全文
posted @ 2019-05-07 17:10 apocelipes 阅读 (260) 评论 (0) 编辑
摘要:二叉树是极为常见的数据结构,关于如何遍历其中元素的文章更是数不胜数。 然而大多数文章都是讲解的前序/中序/后序遍历,有关逐层打印元素的文章并不多,已有文章的讲解也较为晦涩读起来不得要领。本文将用形象的图片加上清晰的代码帮助你理解层序遍历的实现,同时我们使用现代c++提供的智能指针来简化树形数据结构的 阅读全文
posted @ 2019-04-23 20:18 apocelipes 阅读 (425) 评论 (1) 编辑