零碎知识点
- fflush仅仅是为了输出而设计的, 标准中并没有说明它对输入缓冲的效果.
- 一元运算符和
=
是右结合的,这和<<
是完全不同的,a=b=c
意味着a=(b=c)
,b=c
将先执行 - C++11后引入了
thread_local
型的生命周期,这种对象和线程的生命周期是一致的 C++11
中很多类型都支持列表初始化
=
是右结合的,这和<<
是完全不同的,a=b=c
意味着a=(b=c)
,b=c
将先执行thread_local
型的生命周期,这种对象和线程的生命周期是一致的C++11
中很多类型都支持列表初始化
BlockingQueue
和CountDownLatch
BlockingQueue
主要用于在线程之间传递数据.CountDownLatch
主要用于多个线程的简单同步控制.例如,Thread Fence
(类似于CUDA的__syncthreads
) 就可以通过CountDownLatch
实现.// 这只是个最简单的例子,你可以依据自己的场景来修改其API
… Read More … Read More这里谈一下个人的学习建议.
首先可以阅读官方的入门教程, 看完这一部分, 对于一个熟练的C++程序员, 应该可以凑合写出可堪一用的代码了. 对于大部分不以Python为主要工作语言的开发者,到此基本就足够了.
如果有时间,我建议直接阅读Python in a Nutshell第七章之前的内容(不含第七章),并不用完全看懂,大部分细节也不用去记忆,只需要看完即可,至此,你就能基本了解Python的运行机制, 写出质量稳定可控(不会存在低级错误)的代码了.
上面两步完成后, 对一个熟悉C++的程序员而言, 基本任何Level的Python资料都可以看了. 你可以继续看Python in
模板作为一个C++中的一个高级特性,广泛应用于各种场合,以尽可能弥补自身作为编译语言的动态能力.然而,除非必要,模板应当尽可能的简单,避免本末倒置.
T::foo
型语法分析可能会有歧义,例如,T::vl * p
这样的语句可能是使用T
的静态成员做乘法,也可能是创建一个T::vl *
型的指针.
{}
进行逐成员初始化public
或private
声明,则编译器可能重排该类的内存布局(移动部分对象),这将导致成员排布和程序员的预期产生差异.public继承
throw-try-catch
是异常系统的典型三个环节.
exception
为基类的约10种异常,我们可以使用这个类,也可以自定义类,该类的const char * what()
成员用于给用户提供信息.
&&
与||
不会进行短路求值.T
或T&
,而不要是指针.a<b
为假,因为一些众所周知的原因,我们不希望使用中文版的谷歌,但是往往又希望中文界面.以下面的链接作为查询网址即可
https://www.google.com/ncr#hl=zh-CN&q=%s
… Read More