- 博客(19)
- 资源 (1)
- 收藏
- 关注
原创 重新开始
2013年8月某日,偶发心血来潮,翻开CSDN blog主页,发现上一篇博是2009年3月份写的,竟已隔4年多之久,实在是懒,懒得无可救药。当初开博本是想记录自己的技术学习过程,希望回过头看时能发现其中的不足。理想很丰满,现实很骨感,没多久就夭折了。必须得承认,自己是没有恒心的人。总是给自己随便找个理由,而不敢正视自己。今后重新开始,自勉。。。
2013-08-23 21:38:03 506
原创 为C++添加短字符串的switch-case支持
介绍这篇文章描述了一种在C++中对短字符串(长度为4以内)进行switch-case操作的尝试,如同整型值那样,以此避免因字符串匹配带来的开销,稍微提高运行效率。背景如大家所知,C++并不支持对字符串(单字符还是支持的)做switch case的分支操作,因为switch的表达式只支持整型值或可转化为整型值的类型。既然switch case不能用了,那可选的方案就只剩下if-else、
2013-08-10 23:58:07 6201
原创 C++的memset误用
为了写一个高精度计算代码,用memset库函数初始化传入数组(short),调的过程中老发现数组没有完全按我的方式初始化,这种情况总是出现在数组的末端几个元素,其实不是末端,是后半部分才对,估计这个函数是按照每个字节来按位set的,而且,总共设置的字节数为函数的第三个参数,试验之下果然是。 对比下: int arr[4]; memset(arr, 0, size
2009-03-01 01:44:00 709
原创 STL中排序算法函数所用技巧
1.向后拷贝操作。将区间[_Front, _Tail]内容拷贝到_X,其中,_Tail的值对应_X。template inline _BI2 copy_backward(_BI1 _Front, _BI1 _Tail, _BI2 _X) {while (_Tail != _Front) *--_X = *--_Tail; return (_X); } 2.以值_Piv为枢轴,将区间[_F
2009-02-20 15:37:00 512
原创 从partial_sort挖掘堆排序
用过多次STL中的partial_sort算法,却全然不知其实现原理,也没跟进STL源码中去深究。某天在电话面试的时候被问到它的实现原理,没能答出来,实在惭愧。阅读partial_sort源代码以后,有种似曾相识的感觉,哦~~原来是堆排序。以前只在书本上了解过堆排序,没去认真了解和实现过,着实不知道它的妙处所在,如今灾难降临,给自己敲响警钟。 堆排序: 关键字序列k[1...n]
2009-02-19 15:18:00 1280
原创 取map容器的前10大(根据每一个value排序)元素
XX公司的笔试题: 给定一个仅包含英文字母和空格的字符串,请实现一个函数找出该字符串中出现次数最多的10个字母(不区分大小写)。 当时的解答是:#include #include #include #include using namespace std;bool compare_map(const pair &p1, const pair &p2){ r
2009-02-18 15:45:00 6419
原创 虚函数表指针的位置
XX软件公司的笔试题: C++标准中,虚表指针在类的内存结构位置没有规定,不同编译器的实现可能是不一样的。请实现一段代码,判断当前编译器把虚表指针放在类的内存结构的最前面还是最后面。 当时的解答是:#include using namespace std;typedef unsigned (*Fun)(void); class Base{public: Ba
2009-02-18 14:21:00 4232 2
原创 基类虚析构函数分析
多态是由虚函数表来实现,通过父类指针来实现动态绑定。子类重写父类的虚函数后,覆盖虚函数表中父类该虚函数在表中原来的位置,也许“覆盖”也就是由此得称。 那析构函数是否也如此呢?程序代码中经常可以见到将基类的析构函数写成虚函数,目的就是为了防止由以下这种情况造成的内存泄漏: class A; class B : public A{}; ....
2009-01-18 00:35:00 2289
原创 sql语句效率S&Q
问:(1)一次插入多条数据时:CREATE TABLE tb(ID int, 名称 NVARCHAR(30), 备注 NVARCHAR(1000))INSERT tb SELECT 1,DDD,1UNION ALL SELECT 1,5100,DUNION ALL SELECT 1,5200,E 也可以这样:
2009-01-17 17:43:00 521
原创 VS2005常用快捷键
解决方案资源管理器 ctrl + alt + L创建书签 ctrl + k上一书签 shift + F2下一书签 F2全局查找
2009-01-17 17:40:00 671
原创 进程间获取句柄或ID所用到的
1.根据窗口ID,获得创建该窗口的线程ID和进程IDThe GetWindowThreadProcessId function retrieves the identifier of the thread that created the specified window and, optionally, the identifier of the process that created th
2009-01-17 17:15:00 772
转载 访问一个进程的内存空间
在WIN32中,每个应用程序都可“看见”4GB的线性地址空间,其中最开始的4MB和最后的2GB由操作系统保留,剩下不足2GB的空间用于应用程序私有空间。具体分配如下:0xFFFFFFFF-0xC0000000的1GB用于VxD、存储器管理和文件系统;0xBFFFFFFF-0x80000000的1GB用于共享的WIN32 DLL、存储器映射文件和共享存储区;0x7FFFFFFF-0x00
2009-01-17 16:11:00 1874
转载 HOW TO: 编写在 Windows XP 中支持快速用户切换的应用程序
http://support.microsoft.com/kb/310153/zh-cn
2008-12-16 16:07:00 387
转载 windows多线程所涉及基本概念
Windows多线程所涉及基本概念 关键字:多线程 线程同步 线程池 内核对象转帖自:http://blog.csdn.net/shengao/archive/2005/07/17/427590.aspx1 内核对象1 .1内核对象的概念内核对象是内核分配的一个内存块,这种内存块是一个数据结构,表示内核对象的各种特征。并且只能由内核来访问。应用程序若需要访问内核对象,需
2008-12-16 15:49:00 578
原创 跨线程调用MFC成员函数
通常由MFC创建的窗口程序(如简单的对话框程序),程序主窗口的资源句柄和MFC类实例之间的对应关系被记录在了AFX_MODULE_THREAD_STATE结构的map中(属于主线程),在其他线程如主线程创建的工作者线程,通过主线程创建的MFC类对象调用关联到资源句柄的类方法时,通常都会使得程序异常.例如,传入一个指向主线程创建的CWnd类对象的指针给线程函数,在线程函数里通过该指针调用CWnd
2008-12-16 12:28:00 2349
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人