Effective C++ 第3版 Item 26详尽研究 个人认为最后一些内容有待商酌
Postpone variable definitions as long as possible? 真的应该这样?
当然,个人承认前面的一部分都没有错,而且是一贯的很对,很有道理,最后作者提到在循环的问题上应该怎么处理,他提出了两个Aproach.
Approach A: define outside loop – 1 constructor + 1 destructor + n assignments
Approach B: define inside loop – n constructors + n destructors
他的结论是假如你不确定实现A比实现B好,那么就都用B,从这个意义上讲,作者的意思是大部分情况下B都要更好,但是其实呢?经过我的测试,几乎绝大部分情况下,A要更好,而且要好的多,我的结论是,除了单纯的简单内建类型,比如int,bool,double等,其他任何情况,包括这些类型的数组,你都应该使用实现A,下面是详细测试代码。
阅读全文....
数据结构与算法分析 C++描述(第3版) 习题2.8 详尽分析
Data Structures and Algorithm Analysis In C++ Third Edition By Mark Allen Weiss
a:因为1,2很明显,所以不证明了。
至于算法3,可以用数学归纳法证明,x详细证明如下:
阅读全文....
公开的I/O接口,70h,71h,甚至72h,73h我也试过,结果内容和70h,71h一样,在我改动BIOS设置后,发现两次的文件没有什么变化(时间变化除外),按国外的CMOS Memory Map,应该每个时间位后面跟一个Alarm时间位,事实上我打开前后,此位一直为零,是不是一旦开机,BIOS自动为此位清零?目前具体的东西不太清除,还不该尝试在这些Alarm位上写东西,因为我测试过两台电脑,都是AMI的BIOS,在BIOS中打开Alarm后没有发现如期的改动。请高人指点。
阅读全文....
大的IT公司都有他们专门维护的大型支持,如微软,IBM,SUN等,这些大家都知道吧,其实我发现Intel作为硬件厂商,它的技术文献也多的可以了,用罗云彬的话就是说不是没有你要的资料,而是不知道怎么找到。这点,Intel比起上面3家公司稍微欠缺一点,因为他们都是社区型的大型技术支持,Intel的文献资料虽然多,不过稍微显得乱了点,也许因为我对这方面了解少,所以搜索起来不是那么顺利吧。但是碰到再差一点的公司,你就要郁闷了,我在AMI(我的主板的BIOS)生产厂商,的主页上,只找到了主板查错码和叫声的含义,其他没有找到任何编程相关的帮助资料,更不用说像Intel那样的架构分析,中断列表什么的了。这点实在是够郁闷,最后只能在非官方找资料,最后果然感觉资料可能太老,然后有点不对。何其郁闷啊。这是昨晚搞了半天,想说又没有说的,我在这里一般都只发技术性的东西,但是这次突然想说一说。
阅读全文....
这个死程序从年尾做到年头,中间过年休息了太久,结果就像分成两次来做一样。首次在正则表达式测试器中用了MFC的文档结构,实际上让这个本来很小的程序越来越大,而事实上功能稍微多了 一点而已。
阅读全文....
前段时间对于csdn的博客系统彻底失望,在我现在写的东西都还不知道能不能正常发出去,郁闷,加上过年有这么久没有来了。这段时间开始学习汇编,说到汇编,大学开过两门相关课程,微机原理和单片机都是学这方面的,不过那都是8086,51级别的汇编,感觉根本跟不上时代,那时候学的还不错:)现在想学习学习win32的汇编,首先用王爽的书复习一下8086的汇编,因为masm32的ide的编辑功能实在太弱,还是用vim做比较好,做了几个文件,鉴于很久什么也没有发,就发上来吧,以下是我加的vim配置文件
阅读全文....
很早以前在读大学的时候就开始使用Linux,刚开始还因为自己水平不行又不舍得买本书研究,自以为是,直接下载刻了盘就装,当时装的是Red Hat 9,开始就闹了个笑话,因为下载和刻的都是源代码盘。。。。。根本装不了,我才知道,应该下二进制文件。。。。
阅读全文....
虽然我个人认为DOS命令有它的可取之处,并想了办法将其更好地融入到MFC程序中来,但是我个人并不是太提倡大量的使用DOS命令,因为毕竟很多东西用了DOS命令要改都难,而且DOS版本不一,以及很多Microsoft专属的DOS加强命令都让程序的移植性差了很多,而且,很重要的是,用了太多DOS命令,对于只学了C++而没有经历过DOS时代的人来说那简直就是天书,况且,不是人人都那么想去学习DOS 的,而Windows API大家都会觉得多了解几个没有坏处。另外,绝大部分DOS命令都有相关的Windows编程解决方案,比如微软为你提供的类库或则API中都有方法解决DOS命令可以完成的任务,而DOS命令一开始我就提出了,因为都是使用char *的方式调用,所以很大程度上加大了调试的难度,很多时候只能开个CMD窗口去一次一次尝试,问题是,各种情况有的时候没有办法都考虑到,就有了产生神秘BUG的可能,而微软的类库和API这方面就要好的多。还有一点就是如同我在以前例子中演示的那样,DOS命令很多的命令输出是为了在屏幕上输出信息的,比如DIR等,所以会有很多附加信息,导致你需要得到确实需要的信息需要通过一些转换,在前面的例子中我就是使用了正则表达式来完成这些任务,虽然比一般方法可能容易点,但是还是比较复杂,而类库和API一般都能直接得到需要的信息,这也是他们的优点。
阅读全文....
不要搞错了,我是讲怎么在C++中利用DOS命令,不是准备讲DOS编程。以下都以Windows XP中的MS-DOS为例,程序一般也以MFC程序为实例,在VS 2005下编译通过。
很久以前用电脑的时候还属于蛮荒时代,那时候都是黑屏白字的DOS,怎么说都是一种回忆了,现在谁还用那东西啊?呵呵,似乎以前用电脑的经验都是等于废了,记得我前两年考的C二级是最后一届需要考DOS的,虽然那时DOS也只在里面占了几分而已。
难道现在DOS真的没有一点用了吗?其实也不全是,对于个人操作来说,高手会告诉你命令行操作虽然复杂的多,但是永远比GUI操作来的快。在C++中调用DOS命令虽然感觉上可移植性能不是太好,但是有的时候的便利实在是无法言喻,避开了一大堆的API学习,让以前学习的DOS知识发挥余热,何乐而不为呢?
阅读全文....
上一节我演示了一下在MFC程序中怎么应用DOS的dir的命令,可是我们遇到了需要解决的问题,首先就是文件dir.txt的残留问题,其实这个问题很简单,我们也可以用dos的del命令在操作后将dir.txt文件删除,这样的结果就是程序会两次弹出窗口,这样更加让人无法接受了,现在我们的问题是,有没有办法隐藏弹出窗口?答案是有的,这点我在网上找了很久,都没有找到解答,最后自己摸索出了一些方法,不知道还有没有更好的方法,因为这些方法都有些缺点,比较恼火。
阅读全文....