递推法求大数阶乘
摘要:三、递推法 递推法是利用问题本身所具有的一种递推关系求问题解的一种方法。设要求问题规模为N的解,当N=1时,解或为已知,或能非常方便地得到解。能采用递推法构造算法的问题有重要的递推性质,即当得到问题规模为i-1的解后,由问题的递推性质,能从已求得的规模为1,2,…,i-1的一系列解,构造出问题规模为I的解。这样,程序可从i=0或i=1出发,重复地,由已知至i-1规模的解,通过递推,获得规模为i的解,直至得到规模为N的解。【问题】阶乘计算 问题描述:编写程序,对给定的n(n≤100),计算并输出k的阶乘k!(k=1,2,…,n)的全部有效数字。 由于要求的整数可能大大超出一般整数的位数,程序用一
阅读全文
posted @
2011-04-30 11:33
maxweii
阅读(772)
推荐(0)
C++ 常见编译错误解决办法
摘要:“default”标签跳过“ ”的初始化操作问题解决:原因是在switch中有初始化的工作。在switch语句中不可以有定义部分。如果有定义,如初始化的时候,必须把定义部分需要用{ }括起来。
阅读全文
posted @
2011-04-25 10:50
maxweii
阅读(537)
推荐(0)
map按值排序
摘要:在STL中,map是按键来排序的,但很多时候需要按值来排序。一种方法是将map转化为vector,然后排序。(#add 此法缺点为 map内容没变,而是整个的传给vector了,之后所要用的是vector.或许也不能说是缺点.)另一个好的方案是 同时做一个反向的map,与之前的map,key value反过来存储.tool.h#ifndef TOOL_H#define TOOL_H#include <iostream>#include <vector>#include <map>#include <string>#include <algo
阅读全文
posted @
2011-04-22 00:13
maxweii
阅读(1321)
推荐(0)
深入理解C++中的mutable关键字
摘要:mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 他只能用于类的非静态和非常量数据成员 我们知道一个对象的状态由该对象的非静态数据成员决定,所以随着数据成员的改变,对像的状态也会随之发生变化! 如果一个类的成员函数被声明为const类型,表示该函数不会改变对象的状态,也就是该函数不会修改类的非静态数据成员.但是有些时候需要在该类函数中对类的数据成员进行赋值.这个时候就需要用到mutable关键字了 .
阅读全文
posted @
2011-04-21 11:19
maxweii
阅读(325)
推荐(0)
c++关键字详解(volatile, mutable, explicit, dynamic_ cast<T>(expression))等
摘要:1 volatile有些变量是用volatile关键字声明的。当两个线程都要用到某一个变量且该变量的值会被改变时,应该用volatile声明,该关键字的作用是防止优化编译器把变量从内存装入CPU寄存器中。如果变量被装入寄存器,那么两个线程有可能一个使用内存中的变量,一个使用寄存器中的变量,这会造成程序的错误执行。 volatile的意思是让编译器每次操作该变量时一定要从内存中真正取出,而不是使用已经存在寄存器中的值,如下: volatile BOOL bStop = FALSE; 在一个线程中: while( !bStop ) { ... } bStop = FALSE; return; 在另
阅读全文
posted @
2011-04-21 11:12
maxweii
阅读(501)
推荐(0)
WaitForSingleObject WaitForMultipleObjects
摘要:DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds );参数: hHandle是一个事件的句柄,第二个参数dwMilliseconds是时间间隔。如果事件是有信号状态返回WAIT_OBJECT_0,如果时间超过dwMilliseconds值但时间事件还是无信号状态则返回WAIT_TIMEOUT。 hHandle可以是下列对象的句柄: Change notification Console input Event Job Memory resource notification Mutex Process Semapho
阅读全文
posted @
2011-04-17 18:05
maxweii
阅读(1108)
推荐(0)
VS 断点设置
摘要:位置断点: 就是普通的按F9设置的断点,没什么好说的.临时改变变量值:1)通过“即时窗口”(调试->窗口->即时),可以在程序运行过程中(当然是在断点状态下),临时改变某个变量的取值(比如在即时窗口中输入Width = 32,然后回车使其生效,左边局部变量会将改的值显示为红色)!2)直接在局部变量的值上双击,再输入要改的值3)鼠标停留在要改的变量上,在弹出的变量值上单击,输入要改的值优点:可以不必为调试变量的每一个取值而不停地终止测试/修改代码/重新调试,尤其当需要反复测试一个变量的正常取值时。数据断点: 注意,这个技巧仅对C++程序调试有效(或者说native程序),而且你只能在
阅读全文
posted @
2011-04-15 20:20
maxweii
阅读(3377)
推荐(0)
可重入函数
摘要:可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。可重入函数简介 也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static),这样的函数就是purecode(纯代码)可重入,可以允许有该函数的多个副本在运行,由于它们使用的是分离的栈,
阅读全文
posted @
2011-04-14 23:54
maxweii
阅读(819)
推荐(1)
WM_MOUSELEAVE和WM_MOUSEHOVER使用
摘要:默认情况下,窗口是不响应 WM_MOUSELEAVE 和 WM_MOUSEHOVER 消息的,所以要使用 _TrackMouseEvent 函数来激活这两个消息。调用这个函数后,当鼠标在指定窗口上停留超过一定时间或离开窗口后,该函数会 Post 这两个消息到指定窗口。使用方法:1. 在对话框类中定义一个变量来标识是否追踪当前鼠标状态,之所以要这样定义是要避免鼠标已经在窗体之上时,一移动鼠标就不断重复产生 WM_MOUSEHOVER 。 BOOL _bMouseTrack=TRUE ;2. 在 OnMouseMove 中调用 _TrackMouseEvent 函数 if (_bMouseTrac
阅读全文
posted @
2011-04-14 17:56
maxweii
阅读(13519)
推荐(0)
设备相关位图DDB与设备无关位图DIB
摘要:设备相关位图 在Windows中有两种类型的位图:DDB位图(与设备相关位图)及DIB位图(与设备无关位图).与设备相关位图(DDB)是一种内部位图格式,它由MFC库6.0版本CBitmap类定义,有一个与之关联的Windows数据结构. DDB中不包括颜色信息,显示时是以系统的调色板为基础进行各位的颜色映射.例如,如果当前的显示设备是256色模式,那么DDB必然也是256色的。在256色以下的位图中存储的像素值是系统调色板的索引,其颜色依赖于系统调色板。由于DDB高度依赖输出设备,所以DDB只能存在于内存中,它要么在视频内存中,要么在系统内存中。它显示的图像依计算机显示系统的设置不同而不同,
阅读全文
posted @
2011-04-09 11:42
maxweii
阅读(1663)
推荐(0)
关于Visual Assist X(VC助手)几个最新版本的比较与破解下载——更新到10.5.1738.0
摘要:VA绝对是我们平时用的最多也是最有用的插件。伴随着IDE的升级,VA也在不断出着新版本,而每次我都忍不住亲身体验一番,因此写下了这篇文。下文将对VA近期的若干重要版本在功能方面做些横向对比,相信得出的结论能让大家在对VA的版本选择问题上获得帮助。1557:对宏的支持不好,经常无法提示;跟以前的所有版本一样,注释超过一定行数就被“...”代替了,郁闷。1561:比以前版本最大的改进就是注释能够显示完全,超爽;对宏的支持也好多了。但是在有些情况下宏的提示还是有问题,并且goto不到源代码(这个问题上VA似乎已经尽力做到最好了,呵呵)。不过这一版本绝对是VC6的最佳选择。1626和1640:VA工具
阅读全文
posted @
2011-04-08 16:45
maxweii
阅读(688)
推荐(0)
CTabCtrl用法
摘要:一、在对话框视图中加入CTabCtrl控件,资源ID:IDC_TAB,变量名:m_Tab 二、在OnInitDialog()中加入以下代码: m_Tab.InsertItem(0,"窗口1"); m_Tab.InsertItem(1,"窗口2"); // 创建子窗口实例(事先创建好),将父窗口设为m_Tab // CChileDlg1 m_dlgChile1; // CChileDlg2 m_dlgChile2; m_dlgChile1.Create(IDD_DIALOG_CHILD1,GetDlgItem(IDC_TAB)); m_dlgChile2.
阅读全文
posted @
2011-04-06 16:04
maxweii
阅读(626)
推荐(0)
_declspec(dllexport)与_declspec(dllimport)
摘要:__declspec(dllexport)我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类。但是,MSDN文档里面,对于__declspec(dllimport)的说明让人感觉有点奇怪,先来看看MSDN里面是怎么说的:不使用 __declspec(dllimport) 也能正确编译代码,但使用 __declspec(dllimport) 使编译器可以生成更好
阅读全文
posted @
2011-04-06 14:36
maxweii
阅读(730)
推荐(0)
BCG界面库使用指南
摘要:本文以MDI应用程序为例说明如何在已有的VC++工程中使用BCG界面库,我的开发环境为VS2003。 1,将BCG/BCGCBPro目录路径添加到“项目属性->C/C++ ->常规 ->附加包含目录”中,同时将BCG/Bin目录路径添加到“项目属性->链接器 ->常规 ->附加库目录”中。2,确保在CWinApp派生类(设为CMyApp)的InitInstance()成员函数中调用AfxOleInit();3,在ExitInstance()函数中添加: CleanState(); BCGCBProCleanUp();4,在stdafx.h中添加 #inclu
阅读全文
posted @
2011-04-06 10:05
maxweii
阅读(1362)
推荐(0)
CListCtrl使用详解
摘要:1。先来介绍REPORT类型的CListCtrl: 首先使用下面的语句设置CListCtrl的style: DWORD SetExtendedStyle( DWORD dwNewStyle ); 其中 LVS_EX_CHECKBOXES 表示添加CheckBox LVS_EX_FULLROWSELECT 表示选择整行 LVS_EX_GRIDLINES 表示添加表格线 如果设置了LVS_EX_CHECKBOXES属性,则可以用 BOOL GetCheck( int nItem ) const; 来得到某一行是否Checked。 可以先用下面的语句来删除以前的东西: for(int k=2;k&g
阅读全文
posted @
2011-04-03 00:44
maxweii
阅读(346)
推荐(0)
SVN,CVS,VSS工作机制比较, SVN安装及配置
摘要:调试了几天,感觉SVN要简单得很,前几天搞CVS一直有问题,很是郁闷,所有改用SVN了SVN又有两种方式,svnserve服务方式和apache方式,如果用svnserve方式的话推荐直接用Setup-Subversion-1.6.13.msi(目前最新版)哪果用apache方式的话 推荐用VisualSVN-Server-2.1.5.msi(目前最新版) ,比较用Subversion的话调试还是有点费劲建立库: svnadmin create e:\svn\softsvnserve支持多库多端口,好玩意:sc create svnservice binpath= "C:\Progr
阅读全文
posted @
2011-04-01 16:59
maxweii
阅读(526)
推荐(0)
MFC 消息宏
摘要:MFC 消息类型:三种 1、命令消息(WM_COMMAND) 所有派生自 CCmdTarget 的类都有资格接受WM_COMMAND。 2、Window消息(WM_xxx) 所有派生自 CWnd 的类都有资格接受 WM_xxx。 3、控件消息(WM_NOTIFY) 控件向其父窗口通知消息。 消息处理:1、WM_xxx 消息处理 窗口类(自身)处理→基类处理→CWnd∷DefWindowProc()处理; 其所对应的宏一般为在消息 WM_ 前面加上 ON_。 2、命令消息处理 命令消息来自命令用户界面对象(菜单、加速键或工具栏按钮)发出的WM_COMMAND消息; ㈠、WM_COMMAND消息
阅读全文
posted @
2011-04-01 15:54
maxweii
阅读(699)
推荐(0)
Visual Assist X设置
摘要:Visual Assist X的用法2009-04-07 18:02Visual Assist X的用法open file in solution 打开文件中的解决办法open Corresponding file 打开相应文件list methods in current file 列表方法在当前文件file symbol 文件标记find references 找到参考资料find references in file 找到参考文件clone find references results 寻找克隆结果find previous by context 找到以前的前后关系goto imple
阅读全文
posted @
2011-04-01 09:43
maxweii
阅读(1797)
推荐(0)