摘要:
1、error C2440: 'initializing' : cannot convert from 'int (__stdcall *)(void)' to 'void (__cdecl *)(const char *)' This conversion requires a reinterpret_cast, a C-style cast or function-style cast 解决方法:要对GetProcAddress()函数的指针强制转换,如 typedef void (*PFN)(LPCTSTR); PFN pfun=(PFN) 阅读全文
摘要:
堆排序有两个重要的步骤:初始化堆和依次交换(树根和最后一个),然而这两步都涉及堆的调整。以大根堆为例i01234567891011a[i]0162031117849326523从a[1]开始可以保证,结点a[n]的父结点为a[n/2],子结点为a[2*n]和a[2*n+1];初始化的堆如下:要从最后一个非叶子结点开始调整:即从17开始,在17,65,23中选择最大的并交换 交换20与65,由于a[2]与a[5]交换了,a[5]还有子结点,所以要对a[5]进行调整a[5]调整后为: 至此,堆的初始化已经完成了!排序时,每次都是树根a[1]与最后一个叶子结点20交换,之后调整a[1] 65... 阅读全文
摘要:
介绍一种高效的KMP算法:代码可以直接运行#include #include using namespace std;void preKmp(char* s,int len,int* next){ int i=0,j=-1; next[0]=-1; while(i-1 && s[i]!=s[j]) j=next[j]; i++; j++; if(s[i]==s[j]) next[i]=next[j]; else next[i]=j; }}int KM... 阅读全文
摘要:
这几天在看王艳平的《windows 程序设计》,第5章讲解了MFC框架是怎么管理窗口句柄到窗口实例之间的映射,用到了两个类CPlex和CMapPtrToPtr,用于管理内存分配的类(避免因为大量地、频繁地创建窗口对象导致内存碎片的产生)。CMapPtrToPtr类用到了关联结构体CAssoc,其中有好多对指针类型的转换,感觉对结构体了解不够。特别是成员的对齐方式,跟我猜测的完全不同,花了点时间搞清楚了。在跟朋友一起吃饭还有时间,就顺手写下来,供大家参考:首先明白几个概念:1、结构体成员的对齐字节数:可以是n=(1,2,4,8,16);VC编译器默认是8,可以打开工程设置->C/C++-& 阅读全文