- 博客(12)
- 收藏
- 关注
转载 C/C++ 宏带来的奇技淫巧
C++书籍都忠告我们C语言宏是万恶之首,但事情总不如我们想象的那么坏,就如同goto一样。宏有一个很大的作用,就是自动为我们产生代码。如果说模板可以为我们产生各种型别的代码(型别替换),那么宏其实可以为我们在符号上产生新的代码(即符号替换、增加)。关于宏的一些语法问题,可以在google上找到。相信我,你对于宏的了解绝对没你想象的那么多。如果你还不知道#和##,也不知道pres
2011-11-30 15:26:27
674
原创 this指针之const
众所周知,this指针是const的,前几天做个项目,写了一个clone函数,从另一个类中克隆出自己:void Clone(CObject& Object){ //do something}pObject->Clone(*this); 突然,this指针是const,这么做会不会有没有问题,写了一下测试代码发现木有问题,想了一下,原来this指针是const,指向的内容
2011-06-06 21:16:00
432
原创 Tinyxml之递归解析
<br />#include "stdafx.h"#include "tinystr.h"#include "tinyxml.h"void Parse(TiXmlNode* pNode, int nLevel){ while (pNode) { TiXmlElement * pElement = pNode->ToElement(); bool bIsRemove = false; if (pElement) { if (strcmp (pElem
2011-05-19 20:22:00
1103
原创 字符串hash算法比较
1 概述链表查找的时间效率为O(N),二分法为log2N,B+ Tree为log2N,但Hash链表查找的时间效率为O(1)。设计高效算法往往需要使用Hash链表,常数级的查找速度是任何别的算法无法比拟的,Hash链表的构造和冲突的不同实现方法对效率当然有一定的影响,然 而Hash函数是Hash链表最核心的部分,本文尝试分析一些经典软件中使用到的字符串Hash函数在执行效率、离散性、空间利用率等方面的性能问题。 2 经典字符串Hash函数介绍作者阅读过大量经典软件原代码,下面分别介绍几个经典软件中出
2011-05-10 10:45:00
447
原创 决不要重新定义继承而来的缺省参数值
<br />条款38: 决不要重新定义继承而来的缺省参数值<br /><br />让我们从一开始就把问题简化。缺省参数只能作为函数的一部分而存在;另外,只有两种函数可以继承:虚函数和非虚函数。因此,重定义缺省参数值的唯一方法是重定义一个继承而来的函数。然而,重定义继承而来的非虚函数是一种错误(参见条款37),所以,我们完全可以把讨论的范围缩小为 "继承一个有缺省参数值的虚函数" 的情况。<br /><br />既然如此,本条款的理由就变得非常明显:虚函数是动态绑定而缺省参数值是静态绑定的。<br /><br
2011-03-27 15:51:00
475
转载 CMake简介&CMake使用方法
<br />CMake简介<br />CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。CMake 使用方法<br /> CMake的所有的语句都写在一个叫:CMakeLists.txt的文件中。当CMakeLists.txt文件确定后,可以用ccmake命令对相关 的变量值进行配置。这个命令必须指向CMakeLists.txt所在的目
2010-07-12 21:20:00
536
原创 合并k个有序链表,使其成为一个有序链表
这个是算法导论编号为6.5-8的习题,代码如下:#define INFINITE_VAL 0x7FFFFFFF//保证pos节点以下为最小堆void min_heap(int *heap, int size, int pos){ int lpos, rpos, minpos, temp; while (1) { lpos = 2*pos + 1; rpos = 2*pos + 2; if (lpos
2010-06-23 17:50:00
850
原创 AVL Tree Rotation
一.LL rotation: 1.插入一个节点后,使某个节点的平衡因子大于1,设该节点为A,他的左子节点为B 2.将A的左子节点指针指向B的右子节点 3.将B的右子节点指针指向A 4.将原来指向A节点的指针(A的父节点的左/右子节点指针)指向BFigure:二:
2010-06-18 15:37:00
1774
原创 插入排序
<br />void InsertSort(int *p, int n){ int i, j; int key; for (i = 1; i < n; ++i) { j = i - 1; key = p[i]; while ((j >= 0) && (p[j] < key)) { p[j+1] = p[j]; j--; } p[j+1] = key; }}
2010-06-13 15:02:00
267
原创 MFC share DLL中对话框中的ActiveX创建失败原因
最近一个项目中用到一个公司提供的ocx控件,这个控件将使用在一个MFC share DLL中,DLL中有一个对话框,控件就嵌入到对话框中,但是每次启动都有一个ASSERT,但是控件却能正常工作,网上查原因,都说没有初始化OLE,但是在DLL中添加AfxOleInit也不行,后来在优快云找到一个帖子,说是不应该在DLL中初始化DLE,而应该在调用DLL的主调方调用AfxOleInit,一试,果然成
2010-05-17 09:34:00
2067
1
原创 C的两个指针问题
1.int *p1 = *(int **)p2; 这个表达式将p2指向的值当做指针类型赋值给p1,将普通值当做指针值使用2.*(int **)p1 = p2; 这个表达式将p1指向的值修改为的p2保存的指针的值,将指针当做普通值使用 这是今天看us/OS的内存管理的时候看到的,真是太精辟了唉,看来自己的见识还是太少了,以后得加倍努力
2010-01-06 23:36:00
421
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人