
读书笔记
文章平均质量分 78
海风林影
彪悍的人生可以没有妹,但是不能没有技术!!
展开
-
回溯算法之 N皇后问题
// n皇后#include #include #define MAX 15int n; //n queenint cur; //cur rowint A[MAX]; //the ith row's queen put in the A[i]th columnint tot = 0; // total nums//cur 为当前遍历到的行。//从第1~原创 2012-03-28 20:42:52 · 983 阅读 · 0 评论 -
20. 协助完成“返回值优化(RVO)”
[19]最后曾提到了在函数通过传值方式(by value)返回一个对象时,不可避免地要生成一个临时对象,这会严重影响到程序的效率,如下例计算两个分式的乘积:class CRational{public: CRational(int numerator, int denominator) { this->numerator = numerator;原创 2012-04-19 11:50:31 · 1046 阅读 · 1 评论 -
19. 了解临时对象的来源
什么是临时对象?C++真正的临时对象是不可见的匿名对象,不会出现在你的源码中,但是程序在运行时确实生成了这样的对象。通常出现在以下两种情况:(1)为了使函数调用成功而进行隐式类型转换的时候。传递某对象给一个函数,而其类型与函数的形参类型不同时,如果可以通过隐式转化的话可以使函数调用成功,那么此时会通过构造函数生成一个临时对象,当函数返回时临时对象即自动销毁。如下例:原创 2012-04-18 23:00:27 · 1712 阅读 · 0 评论 -
16. 谨记80-20规则
80-20 法则一个程序 80% 的资源用于20% 的代码身上。这里的资源包括:执行时间、内存消耗、磁盘访问、维护成本.....这说明了:软件的整体性能几乎总是由其构成要素(代码)的一小部分决定。也给我们指明了提升软件性能的一个方向:我们只要找到这20%的代码,并进行相应的优化,那么我们程序的运行速度就可以有较大的提高。而怎样找到这20%的代码,有两种不原创 2012-04-17 14:26:29 · 1460 阅读 · 0 评论 -
编程痛并快乐着
《人月神话》中提到编程这个职业时,列出编程给人带来乐趣的理由,同时也谈到这个职业也给人很多苦恼,下面是这篇文章的观点,觉得写的不错:快乐:编程的乐趣是一种创建事物的纯粹快乐。 快乐来自于开发对其他人有用的东西。 编程的过程体现了魔术般的力量。 学习新事物的乐趣,源于工作的非重复特性。 还来自于工作在如此易于驾驭的介质上。总之,编程非常有趣,在于它不仅满足了我们内心深处进行创造的渴望原创 2012-04-26 21:14:11 · 1223 阅读 · 0 评论 -
6. 区别increment/decrement操作符的前置(prefix)和后置(postfix)形式
C++中允许++ 和-- 操作符的前置和后置两种形式具有重载的能力。而重载是以参数类型来区分的,然而不论是++ 还是 -- 的前置或后置均没有参数,为了区分这两种不同的操作,只好让后置式有一个int自变量,并且在它调用的时候,编译器默认给该int指定一个0值。下面的例子是使char型也能进行++ 和 -- 的运算:class Char{public: Char(char); Cha原创 2012-04-16 16:27:52 · 1233 阅读 · 0 评论 -
5. 对定制的“类型转换函数”保持警觉
C++中允许编译器在不同类型中执行隐式转化,例如默默地将char转化为int,将short转化为double等等,这些是语言提供的。现在当你写自己的类型时,你可以选择是否提供某些函数,供编译器用作隐式类型转化之用。如定义一个类类型,是否允许其它类型转化为此类类型,我们可以操控的。可以通过两种函数允许编译器执行这样的隐式转化:单自变量constructor 和隐式类型转化操作符。单自变量co原创 2012-04-15 19:29:43 · 802 阅读 · 0 评论 -
2. 最好使用C++转型操作符
旧式的C转型方式,几乎允许你将任何类型转换为任何其它类型,有其自身的缺陷,表现在以下两方面:不能更精确地指明其转型的意图。如将一个pointer-to-base-class-object 转型为一个pointer-to-derived-class-object(改变一个对象的类型)和将一个pointer-to-const-object转型为一个pointer-to-non-co原创 2012-04-14 18:02:47 · 1087 阅读 · 0 评论 -
8. 了解各种不同意义的new 和 delete
C++中关于new 的形态主要有三种:new operator, operator new, placement new三者的用法有着不同,注意区别适用的条件:new operator:new 操作符,和C++语言其它操作符(如+, -, ->, ::....)一样,是由语言内建的,总是完成相同的事情,程序员不能改变其意义。如下为new的一种用法:string *ps = ne原创 2012-04-15 14:10:54 · 1503 阅读 · 0 评论 -
1.仔细区别POINTERS 和 REFERENCES
没有所谓的null reference: 若有一个变量有可能代表一个对象,也可能不代表任何对象,应该使用pointer; 如果这个变量必须代表一个对象,即不允许这个变量为null,则应该使用reference。 因此,reference必须要有初始化,但pointer就没有此限制(不过,无初始化的pointer风险很高)。原创 2012-04-14 16:43:16 · 877 阅读 · 0 评论 -
教程:建立自己的私有云存储
现在云计算已经算不上一个新鲜词了,各大IT公司的产品都会套上一个“云”字来忽悠用户。相信大家都用过网盘,现在更流行的词应该叫“云存储”,像用的比较多国外的有Dropbox、SkyDrive,国内也有百度云网盘、sina微盘、腾讯微云网盘等等,我们可以用这些网盘在不同的设备上来存储/获取数据,如PC、智能手机、平板电脑等等,同时我们希望不同设备间的数据是同步的。我们将要搭建自己的云系统平台,更精原创 2013-05-09 22:31:01 · 14078 阅读 · 1 评论