自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 C 语言版stl: CSTL

啥都不说,先上代码static void vector_array_test(void){ VECTOR v; ARRAY a; int aa[5]; int b = 0; VECTOR_INIT(v, int); VECTOR_RESIZE(v, 5, int); ARRAY_INIT(a, 5, int);#define O

2011-11-13 23:26:36 1386

原创 见她之前再见她,冥冥之中有天意

我也没有想到啊,快十年不上Q的她居然就是在那晚上线了.......我,静静的对着聊天框,一句话都没说,也一句话都说不出。她自己上了2个小时,下线了。等了这么久,等来的却是无言。突然,我明白了,这也许就是我要的结果。我承认,我已经没有遗憾了。还有什么好遗憾的呢?再见之日,居然真的就是再见之时。老天爷有时候真的很残忍,把一句话用那么直白的方法

2011-11-02 21:12:24 886 2

原创 发生在main函数之前的故事(C语言)

首先申明,此main 函数,特指C语言所编译得到的可执行文件入口函数。         其实很多人在编程实践中都不免和main函数之前执行的代码相关概念打交道,诸如命令行参数,当前工作目录之流的。事实上,对于这个部分的讨论很多,笔者也阅读过不少,不过感觉往往都视角过窄

2011-08-23 18:45:20 2054

原创 重载运算符后的返回值?

其实c语言没有引用这个概念,导致很多语言里的细节其实根本就是矛盾的。光光怪初学者领悟不了,其实有些冤枉。 int get_value_at(int* , int); int x[20];x[1] = 2;*(x + 1) = 2;get_value_at(x, 1) = 2; /// Compiling error! x[1]是什么类型?*(x + 1)又是什么

2011-06-24 13:12:00 2767

原创 好东西,一定要记住

http://www.codesourcery.com/sgpp/lite_edition.html

2011-05-23 12:14:00 615

原创 突然有了一个做c语言脚本引擎的想法

<br />纯c的脚本引擎。<br /> <br />不过作为c语言,既然是用在脚本里的,显然要简洁,去掉一些不必要的东西。用途可以对照lua<br /> <br />一期目标:<br />1。暂时不实现:预处理,结构体的定义和使用,浮点数运算(包括常量运算)。<br />2。要实现的:全局变量,全局和静态局部变量,数组,所有的指针类型。导入外部c函数或函数指针symbol。导出symbol.<br />3.先搞定win32 i386。

2011-05-14 15:04:00 1433

原创 c++中的密码

下面这些密码,兄弟你了解多少呢?1。构造函数设计为保护的,表示这个类是用来帮助子类构造接口的。2。构造函数设计为私有的,表示这个类是用来集合静态方法的,可以用公有静态方法来创建一个该对象。3。析构函数设计为虚函数,表示这个类可以用它的引用或指针来管理子类的生命周期。4。析构函数设计为保护的,表示这个类的生命周期只能由子类来管理。5。析构函数设计为私有的,表示这个类是用来集合静态方法的,可以用公有静态方法来销毁一个该对象。6。保护继承,表示子类需要利用父类的接口来提供面向孙子类的接口。7。私有继承,表示子类需

2011-03-03 20:14:00 895

原创 LUA学习总结

<br />1。等号右边的表达式自动成右值!!<br />一个典型的例子: x , y = y , x            --这里在做交换操作。有没有明白和c语言的交换操作相比,那个额外的变量在哪里吗?(提示:这里其实有2个额外的变量)<br />2。 while do, if then, repeat until! <br />3。for循环和pascal里的for循环的后置条件完全一样。

2011-02-09 17:43:00 528

原创 又把自己贱卖了

<br />如题, 被人家拼命沽价,真让我郁闷啊。

2011-01-21 14:55:00 783

原创 不小心翻阅到的一段关于POD的资料,总结记录在案

什么是POD?这是一个问题.我甚至很难找到2份完全相同的答案.摘自文档ISO/IEC 14882:2003(E) P153:...A POD-struct is an aggregate class that has no non-static data members of type non-POD-struct,non-POD-union (or array of such types) or reference, and has no user-defined copy assignment oper

2011-01-17 04:32:00 817

原创 2011, 新的起点

<br />2011的元旦假期,我在家中度过,哪里也没去,作了一个很纯粹的宅男。哦,也是一个脱离了低级趣味的宅男哦。<br /> <br />元旦过后,一种静极思动的感觉带我飞到了深圳。很感谢我深圳的朋友,热情的留我住宿。<br /> <br />突然想起我舅舅的朋友,原来经常到我舅舅家留宿。后来她有了女朋友之后,有一次吵架,还是习惯性的跑来避风。我舅舅的母亲,也就是我姥姥,以一个长辈的身份说道:“......原来你还是单身汉的时候,来玩我们很欢迎。不过现在你也是有家室的人啦,就不应该随便晚上不回家 ...

2011-01-07 09:43:00 679 1

原创 突然想写一个vc6插件

现在太忙,明年3-4月动手。概要:让vc6实现本地编辑代码,远程编译linux代码。主要想法:当代码发生修改时,把文件发送到linux端;编译时,发送命令让linux端编译,把linux端编译的输出结果传送到本地。细节:vc6 准备一种专门的工程模板,本地解析vc6的编译选项为对应的gcc编译选项。直接利用vc6对依赖关系的解析能力。待定细节:可能考虑每当文件保存,就触发文件传送,也可以提供一个压缩传送的选项.linux端可以考虑准备一个服务端,给不支持telnet,ssh和ftp,sftp的linux端用

2010-12-15 15:20:00 1488 1

原创 科学的反义词

感谢达人,告诉我这个问题的答案。我原来也被教科书误导了。不是宗教,也不是迷信。注意教科书喜欢把宗教与迷信或者谁也不知道定义的“封建迷信”,相互混淆。迷信的反义词是怀疑主义。而是愚昧。宗教是人类对精神世界研究的产物,而科学是人类对物质世界研究的产物。研究的对象不同,研究的方法自然也不同。但是我相信二者对人类文明的发展,无论是物质文明还是精神文明,都起着巨大的促进作用。所以,两手都要抓,两手都要硬。

2010-12-13 13:57:00 3173

原创 什么东西可以做c++模板实参?

<br />今天有人问起这个问题,我突然愣了一下。<br /> <br />有些东西,别人不问,自己未必会去深入的思考其来龙去脉,虽然已掌握其大略。所以, 别人的问题, 对自己也是一个提高的机会.<br /> <br />仅仅简单的把c++标准文档的那些东西重述一遍, 别人显然是记不住地.<br /> <br />略一沉思,说出了我自己的答案:<br /> <br />"取决于传入的实参, 在链接时或编译时, 能够执行是否'等价'的判断操作, 从而使得链接器和编译器能够清除掉重复实例化的模板,仅仅只保留一份

2010-12-12 20:21:00 1031

原创 第一次做破解,很有成就感

pushok svn是一个我用了很久的svn插件,原来我一直依靠这位大虾的无私奉献,哪知道他说他金盆洗手,不破解了.....那个留言中请他出山的就是小弟。这插件现在出了很多新版本,一咬牙,随便找了一些破解工具,自己动手 。哪知道居然出奇的容易,仅仅修改了一个字节,把jnz换成了jz就搞定了。当然,一字值千金,小弟我花了不下5小时找出这个字节.....感觉对操作系统,组成原理,dll编程如果熟悉到一定程度的话,这种事情上手非常快。当然合适的工具也很重要。第一次用上自己破解的软件,心里美滋滋的。想下的去http

2010-12-12 00:51:00 725

原创 有效侦测类是否有特定成员函数

核心思想和初版代码来自TopLanguage讨论组的akirya,见下。这里是检测是否有operator()extern "C" int printf( const char* format, ... );void print( int n ){ printf( "%d/n" , n );}#define check_mem_func( typeName ) / template /

2010-12-02 20:29:00 902 2

原创 刨析真实的谎言

<br />http://t.sina.com.cn/1647170920/zF0tmGkdJW<br />有人指明道姓的,说博物馆里的地动仪是假货,并且注明来历,产地,生产日期,订货客户,生产车间总工程师,产品图纸,只差订单没有拿出来公布了,属于明码标价的“三有”产品。回复中也有人补充司南当年也在订单之中http://news.ifeng.com/society/2/detail_2010_11/30/3278116_0.shtml,只是司南太简单了,生产质量如果不过关就实在太明显,太丢人,最没脑子的人都

2010-11-30 15:55:00 686

原创 超越boost: 2)static_assert

static_assert是我认为boost库中依赖性最小的一个组件。当然对于很多人来说,assert的习惯都还未必能养成,更莫说static_assert,我就还是讲解一下。static_assert:如果传入一个false或者0, 就抛出一个编译错误。既然是要激发编译时的错误,那么只能传入字面常量了。不过就算是只能检查常量的值,也可以检查很多东西了。另外他还能起到在编译错误时,提前阻止模板的深度展开,使模板编译错误信息易于理解如何把一个false或者0变成编译错误,笔者先抛砖引玉,给一个例子。#defi

2010-11-28 17:15:00 1785

原创 超越boost: 1)tuple

写这个系列包括下列原因:1)boost很多东西很有用,真的。2)boost很多东西用起来却很痛苦。不出问题则以,一出问题,编译时错误信息1M算少的了;调试进入boost代码,你就等着两眼摸黑了吧。3)boost很多东西的源码值得学习,如果你能完整的完成一个库,几乎可以吃透template绝大部分知识了。笔者完完整整实现完了的东西也就typeof,tuple还有一些比较简单的东西。4)boost很多东西很长时间不更新了,发稿过去也爱理不理的。以这个tuple为例,别人回信说:“...虽然你的实现后端更高效,不

2010-11-27 21:59:00 2106

原创 折磨人,中国人的最爱

<br />喜欢在外人面前显示自己的气派大,朋友多,交际广,吃得开,有面子几乎是中国人几千年来与生俱来的天性。<br /> <br />其实中国人绝大多数并不会真正计较自己的朋友多一个或者少一个,关键在于不能让外人觉得你朋友少,“不能叫上一大堆人来给你捧场”的时候中国人会感到非常的丢面子。不过,多数情况下,往往叫来的一大堆,只有极少数是和主人关系密切,另外来的人把主人当朋友的只怕也很少。很多时候农村红白喜丧请客上百桌,本质上和两个黑帮谈判之前在市场上临时叫上一堆小弟长气势是没有区别的。<br /> <br

2010-11-20 19:51:00 921

原创 拯救你的字符串:发给Bjarne的信,大家来帮我评价一下

 Dear Dr Bjarne:                          I'm a student from China. And I have some new ideas about some usual problems,  which I want to share with you.                          I have to apologize for my poor English and some grammar errors which may exi

2010-11-19 20:44:00 927 5

原创 对volatile int的单写多读??

我已经不止一次听到关于volatile int的安全读写方面的谬论了。最常见的是volatile int的变量的单写多读操作是多线程安全的。这个结论很搞笑,因为每当支持这个节论的人给我讲一大堆诸如锁总线,原子指令方面的东西时,(权且当他们都说的全对)我几乎都可以反问他:根据你的结论,volatile int是也多线程写安全的(串行的)。那些搞并发编程的人难道都是吃饱了撑的,搞什么锁来玩的?好了,谈些基本点,基于c语言标准:1。volatile的行为是不可移植的(基于编译器,编译器基于cpu)。c语言另外一个

2010-11-16 01:27:00 2423 8

原创 拯救你的字符串:精简

<br />原来的方法由于要支持播种不得不保留了几个空函数,这其实是没有必要的。<br />不过话要说回来,少了他们,笔者我又不得不多重载不少的函数,郁闷阿。<br />算了吧,支持用户,提供一个只能挂种子皮但是效率趋向完美的版本(不管你编译器会不会对空函数inline)。代价是多写了不少模板函数,和对叶子节点进行了封装(原来没有叶子类,现在有了叶子unary_tree_ref,但是叶子不会出现在树上,效率是没有损失的,注意观察哦)。<br />#include <string>#include <ti

2010-11-15 15:04:00 486

原创 拯救你的字符串:永远没有终点的补充

<br />其实我还有很多话想说:<br /> <br />测试显示:测试次数越多,效率提升越小。这应该是因为内存的重复分配成为了时间主要开销的缘故。<br /> <br />由于公共服务器太快的缘故,服务器上面的测试次数都是我pc上的10倍或者100倍(不然运行时间都小于1秒!)。综合上面所说的,这也许是有种版本在gcc上的效率提升有限的缘故。<br /> <br />vs2008的效率提升比我原来说的要多,我当时弄成调试版了。有种版本使用的时间是没种版本的1/3左右!!<br /> <br />vc6有

2010-11-10 18:55:00 546

原创 拯救你的字符串 : 完美救赎之终极奥义

前一篇文章http://blog.csdn.net/zy498420/archive/2010/11/10/6000129.aspx说到的种子皮在vc6的不完美适用问题,被彻底的解决了。剃了个头恰好就有思路了。解决的方法很简单,让前一篇文章所说的bug在且仅在vc6中出现,完美。以毒攻毒,以bug1解决bug2!!原理:vc6重载决议能力有限,但是却允许右值(临时值)传递给非const引用参数。当然同等条件它的重载决议优先选择带const引用参数(这个规则按标准原本只能用在左值上)的函数。template

2010-11-10 16:12:00 954

原创 拯救你的字符串:微有瑕疵的终极救赎

原来的代码http://blog.csdn.net/zy498420/archive/2010/11/10/5998864.aspx里面有一个小bug,我一直都没有注意到,今天不经意间发现:有一个函数的参数少写了个const修饰,你注意到在哪里了吗?结果发现这个bug其实帮我遮盖了很多问题,让我今天又花了大约1小时来解决这些新问题。贴代码#include #include #include using namespace std;#ifdef _MSC_VER#if _MSC_VER

2010-11-10 14:28:00 674

原创 拯救你的字符串 :种子的外皮

上文http://blog.csdn.net/zy498420/archive/2010/11/09/5998427.aspx提到的“播种”之法需要你手动指定目标类型,稍微还是有点罗嗦(et_seed,字母还是挺多的),然而为什么需要指定呢?原因:如果不指定,最终生成的树可能根本不知道应该转换为何种类型,dest_type 未知。那么把    inline operator binary_op::dest_type () const;改为       template   inline operator b

2010-11-10 01:10:00 1214

原创 拯救你的字符串

你还在为string s = str1 + "123" + str2 + str3;这样的链式运算代码产生的临时对象,和二次级复杂度(最少的复杂度为str1 长度乘以"+"的个数)而苦恼吗?从今天开始起,彻底远离这些问题吧。这招我原本以为是自己发明的,还给他取了个名字叫做"操作符代理",结果世间达人早有类似的思想, 叫做表达式模板,(字体的区别其实是正房太太和偏房太太的区别),嘿。但是我觉得我远远的扩展了它已有的一些概念,从而觉得我自己完全有资格给这项技术取个新名字。大家可以先看看我的代码,代码中2次测试了

2010-11-09 21:05:00 864 2

原创 tcp

<br />

2010-10-23 22:02:00 426

原创 c++类自动产生的成员函数总览和模拟

#include struct A{ A(){} A(const A& a){memcpy(this, &a, sizeof(A));} ~A(){} A& operator =(const A& a){ if (this == &a){ return *this; } //Copy your codes from ~A() here, if ~A() is not empty. Do not call it. memcpy(this, &a, siz

2010-10-19 21:00:00 1043 4

原创 模板之小试牛刀---我有点明白为什么这么多人骂c++了(爱恨也交加的c++,让我不得不继续说下去)

昨天晚上有点兴奋,睡不着,哪知道又来惦记起了本主题,突然又想多说几句。原来的代码中有这个遍历自然数,执行单元测试的类:templatestruct test_nature:public test_nature{test_nature():test_nature(){test(N);}};templatestruct test_nature{test_nature(){test(1);}};就模板的嵌套深度而言,深度达到N.多一点编译器就会报错了,现在我们就来优化它。(哥现在并没有写代码,正边写边想哦)首先的

2010-10-16 11:06:00 873

原创 input iterator&& output iterator,十个人九个都说不清楚的故事。

我挑"不能"的 说:input iterator:*操作返回常引用,常量操作.总之不可附值,不可修改,不可附值.可以被拷贝,可以比较。output iterator:*操作是非常量操作,返回引用,总之*操作是改变状态的.可附值,可修改. 不可比较,不可被拷贝(因为不能实现不修改他就获取数据,和auto_ptr类似)。有意思的是difference_type被强制禁用,因为不可比较(比较一次值都变了)。所以forward_iterator和output _terator不是isa的关系。所以std::iost

2010-10-15 18:42:00 4049 1

原创 模板之小试牛刀---我有点明白为什么这么多人骂c++了(补,补充一些骂点)

上一篇使用了enum来模拟编译时常数,但是c++编译时的常数也是有类型的(c仅仅只有int和float)。所以很多编译器吐出海量的警告是很正常的。不过谁让哥心软,要兼容vc6呢?唉,于是又准备了若干宏,给大家选择编译,另外把代码的版式也规整了一下。如果想在一些比较不标准的编译器上通过编译,那么就要做好接受警告的心理准备。如果你是一位boost综合症的重症患者,是否会觉得下面的菜很合自己的胃口呢?(选择宏STATIC_CONST:选择enum或者static const作为编译期常数定义的方法。前者本质只支持

2010-10-15 16:52:00 746

原创 模板之小试牛刀---我有点明白为什么这么多人骂c++了(终,算法改变世界)

上一个版本使用了2分法计算整数平方根,光光看代码也觉得有些麻烦吧,收敛也比较慢,vc6在80左右的时候就要说模板递归太深受不了了。现在在来看一个用牛顿迭代法来加速收敛的方法。迭代次数大大减少,vc6可以支持到大约225了。还是上代码。和上一份比,代码有些很小的变动。4个宏依然继续可以用。上菜#include using namespace std;//enum {stop_tag = (size_t)-1}; //Some compiler will crash so be careful! W

2010-10-13 19:08:00 923

原创 模板之小试牛刀---我有点明白为什么这么多人骂c++了(续,c++图灵完备最小集)

c++图灵完备最小集(一个完整的闭包):Visual C++ 6.0支持的那一部分模板功能........也就是从标准模板功能中剔出偏特化部分就图灵完备了。想看证明的给我留言。大家说是微软的设计人员是天才呢,还是c++的标准委员会是天才呢?说不定疯子的集合才能造就图灵的完备.......上一篇不是用偏特化来 show了一下算素数吗?现在我就来现身说法,如何不用偏特化实现和上一篇代码中完全一样的功能。图灵完备,不用偏特化,可以在vc6中编译..............吼吼。只有偏执狂才能生存。好了不说了,上大

2010-10-13 15:56:00 3046 1

原创 模板之小试牛刀---我有点明白为什么这么多人骂c++了

有朋友让我写一个模版算素数的程序,我也好久没用模版了,就当是热手。结果让我非常非常郁闷。另外附带写了算整数平方根,因为素数判断时要用。#include using namespace std;template//true? Stop expand template! struct sqrt_check{ enum { result = M1 * M1 >= N ? M1 : M2 * M2 N ? //Bsearch begin! sq

2010-10-13 11:29:00 1043 1

原创 vc6编译qt-webkit(4.5.3)

<br />这里提到的用vc6编译是指链接vc6的运行库,用什么编译器任我行。主要就是因为别的项目用的是vc6的运行库,不可能给这个webkit搞特殊,开小灶。<br /> <br />1.请使用icc编译器。和vc6完美配合。<br />2.把os-win32里面的东西拷贝到包含路径文件夹中,并在cstddef.h中添加ptrdiff_t的std引用。<br />2.解决掉std::min和std::max的问题。放心,这个项目不依赖mfc。不会的自己去查。<br />3.在crt源码中,找到xmath.

2010-10-11 22:32:00 2003 1

原创 成员模版,妙用无穷

从boost的share_ptr取的经.构造函数不可以是虚函数,但是构造函数可以是成员模板!!!!!很好,我们可以多态创建对象了.(对象不加虚函数但是可以加有虚函数的数据成员,一般最好是函数对象或者函数指针,这样我们可以在创建时就加钩子,行为用虚函数封装,是否太疯狂?)#include using namespace std;class D{private: class adapter{ public: virtual op(D* instance)=0; virtua

2010-09-28 16:48:00 547 1

原创 C++中侦测内嵌型别

请先阅读http://blog.csdn.net/pongba/archive/2004/08/24/82783.aspx简介:如何判定一个类型内部是否已经定义了某个内置类型,然后据此进行专门或者默认的函数调用,这是很常见的一个问题.上文引用中提到的一个例子即是在Teacher类,Student类已经定义了身份类型(person_tag)的情况下,如何给没有定义person_tag的类的实例在Register操作中进行通用操作.针对上文博客我给出了自己的答案,使之又精简,又能在vc6之类的不标准编译器中编译

2010-08-17 18:04:00 1309

pushok svnscc 1.6.6.2破解

http://www.pushok.com/soft_download.php?idprogram=3最新版本的破解,csdn上最高也就1.5.1的版本可以下载,笔者亲自破解的。放到安装文件夹里替换原有同名文件即可。 完美的vc6 svn插件,笔者用了快2年了。

2010-12-12

空空如也

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

TA关注的人

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