写给大家看的设计模式

2017-08-17
阅读 43 分钟
34.2k
标题的解读: 设计模式与重构号称软工双雄, 在软件工程领域可谓智慧的结晶, 尤其是设计模式, 由于其高度抽象与最佳实践的特性, 导致初学者以及编程经验不足者, 读此如读天书. 所谓"给人读的", 就是将设计模式请下神坛, 用更容易理解的角度来介绍其精髓. 本人大学时期曾读过一本<大话设计模式>, 就走的通俗易懂之路,...

C++ 的社会繁衍

2015-06-02
阅读 3 分钟
8.4k
几乎所有人都知道你能干啥,这某种程度上是你在这个社会的价值体现。但这些不相干的人,并不知道你留下了啥,是万贯家财?还是诗书传承?谁知道?你的家人知道(类内部),你的后代知道(子类),你的朋友知道(友元)。至于你藏了些啥,除了你的家人(类内部),可能也只有几位密友(友元)了解。

说说 auto

2015-04-22
阅读 2 分钟
7.3k
前置 标识 含义 类型 u Unicode 16 character char16_t U Unicode 32 character char32_t L wide character wchar_t u8 utf-8(string literals only) char

面试官,您要的快排

2015-04-06
阅读 2 分钟
24.3k
今天看到 V2EX 上有人讨论 社招还会问 “请手写选择排序算法” 吗?,看来还是有很多人关心的。结合自己最近面试的经历,我可以明确的告诉大家,类似这种问题,只要你的工作经验小于 10 年,基本上逃不掉。劝大家不如抽点时间早做准备。

日本雅虎程序员跳槽程序测试问题

2015-03-30
阅读 2 分钟
3.3k
原题请见:[链接] 我的答案是用简短的递归来解,后来有空想了想传统 DP 的解法,发现也不难。推导过程如下: {代码...} 公式一出,DP 再无难点。直接根据公式建表,然后返回表尾即可。 {代码...} 注意:这道题限制要求输出全部结果,这直接导致无论如何优化也只能是指数级的复杂度。故,说 DP 是不严谨的,只是往 DP 的...

如何知道我的容器包了几层?

2015-03-12
阅读 1 分钟
3k
今天看到一个有趣的问题,请见下述例子: {代码...} 如果给你 v2d、v3d 或是 v4d,你如何求得它们所包裹的层数? 万能的模板又要上场了: {代码...} 来测试一下吧: {代码...} 这都属于 “乍看不难,细思恐极,模板棒喝” 的典型工程问题。。。 PS:搞图形的同志们应该会用得上~

运行时间测量技术

2015-02-10
阅读 2 分钟
7.2k
在优化某段程序之前,我们往往需要确定其运行时间,通过对比优化前后的时间,来衡量优化的力度。 那么问题来了,除了借助操作系统 time 命令这种方式,有没有直接在代码中嵌入时间测量的方法呢? C++ 中比较传统的方式是使用 C 库中的<ctime>. {代码...} 这种方式实际上是可以精确到毫秒的,如果再想更加精确,就...

小二,给我来一个递增序列

2015-02-02
阅读 1 分钟
5.7k
有些时候,我们急需用一段递增序列来初始化容器。这时候,我们可能会首先想起 std::fill, 但如果真正熟悉这个函数,会知道这货也就能用一个单一数值填满你的容器。或许你开始一筹莫展,决定土办法,一个循环,push 递增。

无处不在的托关系

2015-01-26
阅读 2 分钟
3.3k
现实世界中,托关系的现象屡见不鲜。托个关系,就能比别人少奋斗好多年,这未免让许多无背景的屌丝码农扼腕长叹。但更令人绝望的是,C++ 里竟也有类似的情况。

你们以为我在学C++?其实我在学 Python

2015-01-20
阅读 3 分钟
21.3k
我会随便说,C++ 近年来开始"抄袭" Python 么?我只会说,我在用 C++ 来学习 Python. 不信?来跟着我学? 字面量 Python 早在 2.6 版本中就支持将二进制作为字面量了[1], 最近 C++14 逐步成熟,刚刚支持这么干[2]: {代码...} 更不用说 Python 在 1.5 时代就有了 raw string literals 的概念[3],咱们 C++ 也不算晚,C++1...

被人忽略的 signed 关键字

2015-01-19
阅读 2 分钟
4.9k
我们都知道且经常用到 unsigned 关键字,但有没有想过,与此对应的 signed 关键字有啥用? {代码...} 这俩有区别吗?没区别,看起来,signed 完全是个累赘。 真的是这样吗? 我查阅了 C++11 的标准文档(草稿N3690),发现一些端倪: 3.9.1 Fundamental types Objects declared as characters(char) shall be large enough...

谈指神通

2015-01-16
阅读 8 分钟
12.5k
都说指针是 C 语言的灵魂,其实这是由几个重量级的数据结构决定的,如最基础却又最重要的:链表与二叉树两位元老,所有操作几乎都依赖指针。 可谓是:无指针者,无链表与二叉树也 想象一下,没有链表与二叉树,计算机世界将如何存在? 当然,数组的本质也是指针,但藏得较深,大家用脚标得过且过,倒也怡然自得。 若只论...

排列组合技术

2015-01-14
阅读 2 分钟
9.4k
恐怕你已经发现了,这个方法可以帮助我们列出某个容器的全套排列组合。它其实还有一个兄弟函数,名曰 std::prev_permutation,一个是向前排列,一个是向后排列,算法上大同小异。

慎用容器的 List Initializing

2015-01-13
阅读 2 分钟
4k
C++11 中引进了一种叫 List Initializing 的技术,C++ Primer 5th 的 3.3.1. Defining and Initializing vectors 中非常肤浅的介绍了一下它的形式:

字符串分割技术

2015-01-13
阅读 3 分钟
24.1k
"This is a statement" 使用 C++ 将这个字符串分割成四个子字符串: "This", "is", "a", "statement"? 超级简略版 {代码...} 这个技巧不足为道,C++ Primer 5th 中 10.4.2. iostream Iterators 里有介绍。 工程实用版 上面的方法虽然简洁,但是仅能够按空格分隔,在实际工程中,显然是没太大用处的,抽出一个 split 函数...

一个诡异的取平方函数

2015-01-13
阅读 1 分钟
3k
a 是一个指针, &a 即为该指针指向的地址. 所以 a[n] 的本质是一个指针指向一个数组. 而 (&a)[n] 的本质是那个指向一个数组的指针的地址.