摘要: 5. 优先使用auto而非显示类型声明 在C++之中,使用auto关键字声明类型可以将程序员从输入繁琐的类型中解放出来,编译器会自动推导出变量的实际类型。 使用auto关键字 在C++14中,lambda函数的参数都可以使用auto来定义。 在C++中, 的key的类型是const类型的,所以即便采阅读全文
posted @ 2017-06-03 19:44 ZHOU YANG 阅读(85) 评论(0) 编辑
摘要: 1. 理解模板类型推导 1. expr是 函数调用时,推导出的Param和T的类型如下: 需要特别注明的是,通过 的方式传入数组,数组的大小信息不会丢失。 在类型推导期间,数组和函数将退化为指针类型,除非他们是被初始化为引用。 2. expr是 在进行类型推导的时候,rx的引用性被忽略了。 3. p阅读全文
posted @ 2017-06-02 21:37 ZHOU YANG 阅读(51) 评论(0) 编辑
摘要: 1. 使用细粒度锁和条件变量的线程安全队列 可以使用细粒度的锁来减小队列的临界区,这里使用了一个dummy node用来进一步减小锁的临界区。若要判断队列是否为空,只需要执行下述判断: 请注意,因为在进行push的时候需要修改tail,所以对tail的访问和修改都需要进行加锁。这里使用get_tai阅读全文
posted @ 2017-05-30 21:32 ZHOU YANG 阅读(691) 评论(0) 编辑
摘要: C++ 原子类型 原子操作:一个不可分割的操作。 标准原子类型可以在头文件之中找到,在这种类型上的所有操作都是原子的。它们都有一个 的成员函数,让用户决定在给定类型上的操作是否用原子指令完成。唯一不提供 成员函数的类型是 ,在此类型上的操作要求是无锁的。可以利用 实现一个简单的锁。 C++ 11中的阅读全文
posted @ 2017-05-29 00:56 ZHOU YANG 阅读(2072) 评论(0) 编辑
摘要: 下列代码用于压缩和解压字符串,使用标准库string。实现了对zlib的简单封装。阅读全文
posted @ 2017-03-25 15:24 ZHOU YANG 阅读(408) 评论(0) 编辑
摘要: 一直以来,对于assert的实现总是不太理解,现在深入assert背后的代码,总算对assert的实现有了一个清醒的认识。 assert基于宏定义与宏展开实现。首先介绍一下assert的功能:它能够断言给定表达式是否为true。如果为true,则对应assert的代码会转换为 ,即一条空语句,ass阅读全文
posted @ 2016-12-02 01:17 ZHOU YANG 阅读(469) 评论(0) 编辑
摘要: 1. 介绍 Valgrind工具组提供了一套调试与分析错误的工具包,能够帮助你的程序工作的更加准确,更加快速。这些工具之中最有名的是 Memcheck 。它能够识别很多C或者C++程序中内存相关的错误,这些错误会导致程序崩溃或者出现不可预知的行为。 接下来会以最短的篇幅告诉你如何使用 Memchec阅读全文
posted @ 2016-11-28 17:08 ZHOU YANG 阅读(3553) 评论(0) 编辑
摘要: 字符串匹配的暴力解法 给定字符串s和p,寻找字符串p在字符串s中出现的位置,暴力解法如下所示: 如果当前字符匹配成功, ,继续匹配下一字符。 如果 与 匹配失败,令 ,即i转到上次首次匹配开头字符的下一位置,j从头开始。 k=len[k 1] k f e abeab e f str str str_阅读全文
posted @ 2016-11-22 19:23 ZHOU YANG 阅读(243) 评论(0) 编辑
摘要: 在ubuntu 上安装k vim 早就想好好改造一下自己使用的vim了!可惜各种配置都十分复杂,特别是涉及到C语言的语义补全, YouCompleteMe ,总是出各种安装问题。今天有人推荐我使用k vim,我一下子找到了完美的解决方案。但是在安装k vim的过程中,依然出现了很多问题,有必要记录一阅读全文
posted @ 2016-11-18 22:09 ZHOU YANG 阅读(729) 评论(0) 编辑
摘要: make 要点简记 1.隐式推导 make可以自动推导文件及其文件依赖关系后面的命令,所以我们没有必要在每一个 .o 文件后面都写上类似的命令,因为make 会自动识别并且自动推导命令. 2.在规则中使用通配符 表示将object变量定义为所有.o文件组成的集合。在定义变量的时候,不能使用通配符,否阅读全文
posted @ 2016-11-05 22:08 ZHOU YANG 阅读(202) 评论(0) 编辑