09 2009 档案
摘要:这几天工作时碰到一个C++的编译错误(我使用的是Visual C++ 7.0),说是有一个类重复定义,仔细想想我们的这个项目也是做了好几个Release了, 内部代码应该不会有这样的低级错误, 真把类型给重复定义了,检查结果正如我预料的一样。 就这样, 我左右没找到原因,被一个编译错误给卡在那里了。(在我的概念中, 程序错误的等级为:编译错误->链接错误->逻辑错误, 此错误属于最低级...
阅读全文
摘要:对于C++开发, 我想在Windows下大家用的最多的应该是MS的VC++。但其强大的功能背后却有着"启动速度慢","占用资源多"的缺点,尤其是VS2005, 速度不是一般的慢。 当然,这也十分正常,鱼和熊掌向来是很难兼得。 用这个大家伙开发公司的大项目,用起来自然是得心应手;但对于一般的小程序,就有点"杀鸡用牛刀"的感觉了。 然而, 无论在工作还是平时自己学习中,写个小程序, 通常只要一个cpp...
阅读全文
摘要:从0~13中任取出7个数,然后判断这7个数中是否存在连续的5个数, 规则如下:1) 7个数可以是重复的数.2) 0可以表示任意数例子如下:0, 1, 4, 3, 8, 0, 13--->true: 1-2-3-4-50, 1, 1, 1, 9, 10, 0--->false0, 1, 3, 9, 10, 11, 12->true: 9-10-11-12-13 0, 0, 0, 0, 0, 0, 0->true: 0-1-2-3-4这是最近看到的一个算法题,粗粗一看,觉得很简单,可是慢慢往里面想,觉得要考虑的还是挺多的。现在把它实现出来放在
阅读全文
摘要:给出1, 2, 3, 4四个数, 请编程输出其全排列, 如:1 2 3 41 2 4 31 3 2 41 3 4 2...这样的题, 我们在学校的时候一般都遇到过,而我们最先能想到的,应该就是递归实现了,因为这和我们我理解的数学中的排列组合比较一致:先取第一个数,有4种可能,再在剩下的3个数种取出第二个数,这又有3种可能,这样下去直到取到最后一个数。 这样,4个数的全排列就有4*3*2 = 24个。n个数的全排列就是n*(n-1)*(n-2)*...*2*1. 按照这个描述, 我们发现有两点在程序中递归实现时十分重要:1. 哪些数已经取过了而哪些数又是没有取过,可以用的?2. 现在取的是哪一个
阅读全文
摘要:在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。1. do...while(0)消除goto语句。通常,如果在一个函数中开始要分配一些...
阅读全文
摘要:说起C++的模板及模板特化, 相信很多人都很熟悉 ,但是说到模板特化的几种类型,相信了解的人就不是很多。我这里归纳了针对一个模板参数的类模板特化的几种类型, 一是特化为绝对类型; 二是特化为引用,指针类型;三是特化为另外一个类模板。这里用一个简单的例子来说明这三种情况://generalversiontemplate<classT>classCompare{public:staticb...
阅读全文
摘要:auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用"裸"指针那样非常小心的使用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认这个...
阅读全文
摘要:一般情况下,如果要我们写一个求绝对值的函数,我们的实现很有可能会是这样:template<classT>Tabs_Normal(TtNum){if(tNum>0.0)returntNum;elsereturn-tNum;}也就是说我们会用到一个if-else判断来决定是否反转符号位。在3D游戏软件,或一些对性能要求比较高的底层系统中,当大规模的求绝对值时,这个if-else结构会...
阅读全文
摘要:这几天在网上看到有人总结了4种比较常见简单的排序的算法,并用C#实现了出来。看了之后不由的想起了大学时候学<<数据结构>>的情景, 忍不住用C++实现了一遍,除了冒泡排序, 选择排序, 插入排序,希尔排序之外, 还包括了算法复杂度较好的快速排序与堆排序。 然后用C++强大的模板功能实现了一个基于policy的Sort函数, 很明显,这个Sort函数是以排序算法为policy...
阅读全文
摘要:Singleton应该可以算是GOF的23个模式中最简单的一个模式了,它有两个要求:一是保证一个类仅有一个实例;二是提供一个访问它的全局访问点。这在实现中分别对应为:一是构造函数非public;二是提供一个静态函数作为全局访问点。在C#中,我们可以这么写:publicclassExampleSingleton{//codetosupportSingletonprotectedExampleSing...
阅读全文
摘要:今天在网上无意间看到一道笔试题,初看十分简单,再看要求发现还是比较曲折的: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--函数原形已经给出:intp(inti,intn);功能:调用该函数,打印如下格式的输出,例p(1,7);123456765432...
阅读全文
摘要:目前所做的项目,今年应该是第5个release了, 走过了这5年的风风雨雨,中间几度更易开发人员,现在的团队与5年前的团队已是两个完全没有"交集"的团队, 这样必然导致我们对项目会存在很多的不理解,不理解其初衷,不理解其原始设计,不理解其代码。。。对一些不理解的地方不敢大动手脚,只能修修补补以完成需要的功能,其结局从开发角度看就是总体设计的缺失, 代码结构的混乱,从功能角度看就是容易出错,运行速度...
阅读全文
摘要:近一年以来,AUTODESK的面试题在网上是闹的沸沸扬扬,作为一个名企,这是可以理解的,况且其面试题质量也是不错的。抽一些闲暇时间,把网上传的比较多的70道题简单的解答了一遍,不为别的,只为再熟悉一下在大学学过的一些基础知识。希望对大家有用。当然,这只是我的个人解答,有什么不对的或者需要补充的,大家尽管提上来,好的话我加上去的。。。1. 在类的普通成员函数中调用虚函数,情况是怎么样的?(对象、引用...
阅读全文
摘要:消息机制是Windows的一个核心机制,而了解消息机制最好的资料自然就是MSDN了:Messages and Message Queues,读了一下感觉颇有收获,摘下一些要点:窗口过程 每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:窗口句柄(Window Handle),消息ID(Message ID),和两个消息参数(wParam, lParam), 当窗口收...
阅读全文