自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (2)
  • 收藏
  • 关注

原创 指向数组的指针

代码段1:#include int main(void){ enum { m = 3, n = 4 }; int a[m][n]; int (*p)[m][n] = &a; printf("p : %p, *p : %p, **p : %p\n", p, *p, **p); return(0);}代码段2:

2013-04-10 22:11:47 744

原创 一道证明题

证明:    有n个内部结点的AVL树满足 : hAVL树性质:       AVL树是一种二叉搜索树,每一个节点的左右子树高度之差最多为1(空树定义为0)。假设高度为h的AVL树内部节点的最小数量为f(h),则          当高度为1时f(1)=1;          当高度为2时f(2)=2;         当高度为3时f(3)=4;

2013-04-08 21:43:30 993

原创 交叉编译 google protobuf

文章记录了交叉编译google protobuf 的整个过程。build 环境:             OS/hardware-platform :  Linux ubuntu 3.2.0-32-generic-pae #51-Ubuntu SMP Wed Sep 26 21:54:23 UTC 2012 i686 i686 i386 GNU/Linux            CRO

2012-10-21 12:46:33 9487

原创 【K&R 习题 1-23】删除C/C++语言中的程序中的所有注释语句

原题: 编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。再C语言中,注释不允许嵌套。        题目的目的是要做一个简单的语法分析器,所使用的工具为状态机。状态  0  : start          输入 /  进入状态1         输入 "  进入状态4         输入 '  进入状态8         输入其他字符

2012-09-08 14:45:31 4374 2

翻译 以标记清除的方式垃圾回收

翻译自 : http://www.brpreiss.com/books/opus5/html/page424.html  , 用于了解用于垃圾回收的标记清除算法.        标记清除算法是一种垃圾回收算法,它是第一个可以回收被循环引用的数据结构的垃圾回收算法.现在仍旧有许多常用的垃圾回收技术使用各种各样的标记清除算法的变体.        在使用标记清除算法时,未引

2012-09-06 08:09:53 5580 1

原创 [并行编程] 自己实现一个critical section

#define WIN32_LEAN_AND_MEAN#include #include #include #include #include struct own_critical_section{ long own_lock_count; // count of locked thread, -1 means unlock , other means lock.

2012-06-29 21:37:31 1203

翻译 sharerd_ptr 实践,线程安全性,预定义宏以及FAQ [boost 1 49 0]

Handle/body idiomshared_ptr 一个通常用法是用来实现 handle/body 模式. handle/body模式可以避免在头文件中暴露实现.例子 shared_ptr_example2_test.cpp  包含头文件shared_ptr_example2.hpp .头文件中使用 shared_ptr 保存了了一incomplete type , 从而隐藏了实现

2012-05-05 17:10:24 1576

原创 C/C++宏的替换顺序[整理总结]

关于宏替换的顺序 看过csdn50楼的帖子 :      http://topic.csdn.net/u/20090727/18/457c61bd-7461-431c-bbf9-924865cfe43c.html 之后的 总结 总结:     不管书写的代码是不是跨平台的,当替换路径中出现  operator#  与 operator## 时, 替换的次序可能会不会

2012-04-20 10:52:21 1877

翻译 [boost] shared_ptr 概述

翻译来自 : http://www.boost.org/doc/libs/1_49_0/libs/smart_ptr/shared_ptr.htm3. 概要namespace boost { class bad_weak_ptr: public std::exception; template class weak_ptr; template class shar

2012-03-08 20:44:19 2277

翻译 [boost] shared_ptr 简介

翻译来自 : http://www.boost.org/doc/libs/1_49_0/libs/smart_ptr/shared_ptr.htm1. 简介: Shared_ptr 模板类用来保存动态申请的对象指针,一般在C++中动态申请使用new表达式. 当最后一个指向对象的share_ptr被销毁或者重置时,对象将会被delete掉. 每一个shared_ptr都实现了拷贝构造

2012-02-25 20:19:27 1455

原创 Boost,scoped_ptr中的unspecified_bool_type

从官网上下的boosthttp://sourceforge.net/projects/boost/files/boost/1.48.0/已经在硬盘里扔了半个月了,一直也没时间碰.终于抽出来点空,从scoped_ptr看起来吧.毕竟智能指针相对熟练一点.scoped_ptr应该是属于最简单,安全的非侵入式智能指针了.auto_ptr赋值与拷贝构造会交出指针的控制权,这个行为真是令人头大,不仅不符合常

2012-02-09 21:56:18 1356 2

原创 C++中的sizeof

昨天看的void的概念中提到了显式转换成为cv void.想起来转换,又没忍住翻到standard conversion.这一大坨隐式转换虽然可以让程序看上去简洁清爽,但是暗地里可是害了我不少次.有一次写从文件读写char类型数据的程序,  当时重载了读取/写入的函数,给出了 unsigned char 以及 int 两种类型的参数,当时写入的数据类型为char,想当然的以为应该是调用unsign

2012-01-07 16:48:58 893

原创 assert , ASSERT中的void

assert            C\C++语言提供的断言宏.定义如下:         #define assert(_Expression) (void)( (!!(_Expression)) || (_wassert(_CRT_WIDE(#_Expression), _CRT_WIDE(__FILE__), __LINE__), 0) )ASSERT

2012-01-05 21:25:13 2575

原创 COM线程模型之二[译]

[原文]http://msdn.microsoft.com/en-us/library/ms809971.aspx<br />Behavior of the COM Threading Models<br />Before any thread can create or manipulate COM objects, it must perform some preliminary initialization to establish its relationship with the COM

2010-08-21 17:57:00 751

原创 COM线程模型之一[译]

http://msdn.microsoft.com/en-us/library/ms809971.aspxObjects and ApartmentsIf you've so much as cracked a book on COM, you've undoubtedly come across the term apartment, which describes the constructs in which COM objects are created. If you're unfam

2010-08-21 17:34:00 524

原创 Copy Construct && Copy assignment(Operator =)

1 让 Copy assginment 返回一个  & *this       为了实现连锁等式 2 让Copy assginment 处理自我复制,这里有两个问题,第一个问题是自我赋值安全性,第二个问题是自我赋值安全性  当拷贝时出现深拷贝时,自我赋值就变的十分危险.可以利用 identity test 来解决这种问题,class T{public: T& o

2010-04-28 13:51:00 1178

原创 COM重点之*COM对象的接口原则

1.对于同一个对象的不同接口指针,查询得到的IUnknown接口必须完全相同.也就是说,每个对象的IUnknown接口指针是唯一的; 2.接口自反性.对一个接口查询其自身总应该成功; 3.接口对称性.由A接口成功查询B接口,则B接口一定也可以成功查询A接口; 4.接口传递性.有A接口成功查询B接口,由B接口成功查询到C接口,则由A一定可以成功查询到C; 5.接口查询

2010-02-18 21:16:00 599

原创 COM重点之*使用引用计数规则

1. 函数参数中使用接口指针变量,分为三种情形:输入参数,输出参数,输入-输出参数.     输入参数,不必管理引用计数.      输出参数.      对于实现者,输出参数在被调用函数返回之前,应该调用addRef使接口引用计数加1;      对于调用者,输出参数在使用完毕输出的接口指针变量之后,应该调用Rlease使接口引用计数减1;      输

2010-02-18 20:53:00 932

原创 编译器比预处理器更有效!

    预处理器,他的作用就像名字所说.对于代码按照语法进行预处理.比如常用的 #include. #define,其作用只是简单的替换.当然预处理器不只可以这些事,vc编译器提供了大量的预处理指令,提供包括编译命令行,隐式链接等功能.     看看维基百科对于预处理器的解释吧:        In computer science, a preprocessor is a p

2009-08-21 08:32:00 728

转载 视角的力量--再说OO设计原则

转自 :http://www.cnblogs.com/me-sa/archive/2008/04/15/ooview.html 《OO设计原则总结》一文中我提出了一个问题:如何更好的使用这些原则?怎样在实践中遵守这些原则,使用三种视角思考问题就是答案之一; 本文内容包括:1.为什么我们过早的纠缠于细节?问题的本质是什么?2.救命稻草--Martin Fowler的三

2009-05-13 15:45:00 457

转载 设计模式

什么是设计原则? 设计原则是基本的工具,应用这些规则可以使你的代码更加灵活、更容易维护,更容易扩展。基本原则 封装变化Encapsulate what varies.面向接口变成而不是实现 Code to an interface rather than to an implementation.优先使用组合而非继承 Favor Composition Over Inh

2009-05-13 13:46:00 415

转载 关于std::copy 中的overlapped问题解释

转自 http://www.trilithium.com/johan/2006/02/copy-confusion/  The standard C++ library contains std::copy which is the generic equivalent to the Cmemcpy function. There's nothing stopping you fr

2008-12-25 11:00:00 1658

原创 不要把多态应用在数组 [3.2]

你的编译器会在毫无警告的情况下接受这个函数,但是再看一下这段循环代码,这段代码是编译器必须要编译的:for(int i=0;i{s}现在,array[i]实际上是指针运算表达式的缩写:它表示的是 *(array+i).我们知道变量array是指向数组的首地址的一个指针,但是array+i所指向的地址偏离array所指向的地址到底是多少呢?它们的间隔应该是i*size

2008-09-01 17:10:00 533 1

原创 More effective C++ 今日一贴 - 绝不要把多态应用与数组[3]

继承的一大特点就是 , 它允许你通过指向基类的指针和引用来操纵派生类对象.这种指针和引用的行为具有多态性 ------就好像它拥有多种类型.C++ 也允许你通过基类指针和引用来操纵派生类数组.但这算不上什么特性,因为它几乎从来不会按照你期望的那样运行.  例如: BST(二叉搜索数对象)        class BST{......};        class BalancedBS

2008-08-28 09:23:00 539

原创 More effective C++ 今日一贴 之自增自减运算符[2]

据说古代(20世纪80年代)的程序员,经常因为 C++ 无法区分 ++运算符 以及 -- 运算符 的前缀和后缀调用而发牢骚,于是C++ 语言得到了扩展,允许对前缀与后缀形式的自增和自减进行重载.重载函数是通过他们参数类型上的差异得以区分,但是不管前缀和后缀形式的自增和自减都没有参数.为了解决语言上的这个问题,c++规定后缀形式有一个int类型参数,当函数被调用时,编译器悄无声息地传递了一个 0

2008-08-27 09:03:00 627

ISOC++98标准

ISOC++98标准

2011-11-28

高质量C—C++编程指南.pdf

林锐的高质量C++高质量C—C++编程指南.pdf 高质量C—C++编程指南.pdf 高质量C—C++编程指南.pdf

2009-03-21

空空如也

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

TA关注的人

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