自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Top coder

走高端路线

  • 博客(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

原创 博客开写了

计划从现在起,开始写博客了,内容以技术为主,加油!

2009-04-24 22:17:00 305

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除