偶尔看到了汉诺塔这个问题,作为益智题从正向分析了一下,很难解. 编程解的思路倒是很清晰.简单记录一下
#include <iostream>
#include <vector>
struct Stock
{
std::vector<int> plates;
int id = 0;
};
Stock g_stocks[3];
… Read More 很多设计模式相关的资料都是用
Java
来描述的,有必要简单补充一下Java
和C++
在OOP
技术层面上的区别
Java
风格的接口可以视为一个只有pure virtual
=
是右结合的,这和<<
是完全不同的,a=b=c
意味着a=(b=c)
,b=c
将先执行thread_local
型的生命周期,这种对象和线程的生命周期是一致的C++11
中很多类型都支持列表初始化
… Read More这里谈一下个人的学习建议.
首先可以阅读官方的入门教程, 看完这一部分, 对于一个熟练的C++程序员, 应该可以凑合写出可堪一用的代码了. 对于大部分不以Python为主要工作语言的开发者,到此基本就足够了.
如果有时间,我建议直接阅读Python in a Nutshell第七章之前的内容(不含第七章),并不用完全看懂,大部分细节也不用去记忆,只需要看完即可,至此,你就能基本了解Python的运行机制, 写出质量稳定可控(不会存在低级错误)的代码了.
上面两步完成后, 对一个熟悉C++的程序员而言, 基本任何Level的Python资料都可以看了. 你可以继续看Python in
尽管在大部分场合中,数组类型和函数类型都被转换成某种指针使用,然而它们确实是某种类型.
这一点在类型推导中很重要,因为类型推导可以推导出数组类型/函数类型
T[N]
型对象为数组类型,其中N必须为constexpr
,称T array[N]
中的array
为T[N]
型的一个实例.
N
是数组的一个属性,当N
不同时,是不同类型的数组.xxx_cast<TYPE>(var)
,每个都有特定的应用场合.TYPE tmp(var)
. 转换语句整体为tmp
xxx_cast<TYPE &>(var)
得到的临时量可以作为左值,其他情况都是右值。const_cast
const_cast
是只用于处理const
const
限定符const
是一种编译期特性,用于限定对象的编译期写入权限
trick
在运行期写入对象.const
就能利用编译器约束开发人员的行为,给开发人员做一定提醒.const
值往往还可以供编译器进行优化.const
型.最常用的场合是函数形参/返回值中的const T
想要彻底理解这一部分的内容,你应该对OS/进程/虚拟内存/编译过程有一定的了解,仅从语言层次学习是比较抽象的.
extern
,且不含任何初始化部分,则该语句就是一个纯粹的声明,例如
extern T &val;//纯声明
extern T val;//纯声明
extern T