数据结构allocator内存池内存池V2traits,construct&destructvectorlistrbtreemap&sethashtablehash_map&hash_set算法Read More
posted @ 2012-07-15 19:34 lwch Views(371) Comments(0) Edit
正文内容加载中...
posted @ 2013-10-09 11:19 lwch Views(510) Comments(0) Edit
其实早就想写本文了,一直想缅怀一下过去的自己。说是说5年,其实在很久之前我已经用按键游侠(一个用VBS作为引擎的东西)开始写脚本了,说起编程还需要感谢猪哥,是他将我带入了编程这一领域(可悲的是现在都找不到QQ列表中的哪位了,猪哥希望您看到这篇文章之后能联系我)。5年前,我性质匆匆的买来了一本VC6和VS2005(好像是这个版本)入门的书打算开始学习C++(目前这两本书在某个妹子手里)。然后开始了漫长的C++学习之旅,记得当时我是一边摸索着学习C++的语法,一边在写按键娃娃(值得庆幸的是目前这货居然还能搜的到),下面我们来看一段有意思的代码。 可以看到当时的我是多么的稚嫩,居然把一个功能函数..Read More
posted @ 2013-06-17 23:24 lwch Views(13047) Comments(45) Edit
接上一篇,首先需要修正的是在DFA生成算法中的传播部分,应该需要有个循环一直传播到不能传播为止,在多次实验中表明,有些展望符是通过第2,3,4甚至更多次传播得来的。应此,相应的make函数变成了Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> boolLALR1::make(){vector<LALR1Production>v;v.push_back(inputProductions[begin][0]);pStart=closuRead More
posted @ 2013-05-30 23:07 lwch Views(523) Comments(0) Edit
以下所说的文法文件均为QParserGenerator的文法文件产生式我们将文法文件中形如Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->strings->strings"{String}"|"{String}";形式的式子称为产生式,它由它的左端非终结符(strings)和右端终结符和非终结符组成。非终结符:非终结符总是出现在产生式的左端,它表示这个条目是由右侧的一些终结符和非终结符推导而来的。Read More
posted @ 2013-05-12 22:37 lwch Views(746) Comments(0) Edit
QCore/Library说明文档 李文超前言QCore/Library是一套类STL的类库,它在标准库的范围内删去了不常用的heap、deque等结构(至少我是不常用的)。并为一些容器提供了一些特殊的接口,比如vector中的push_back_unique、add和add_unique等。Library主要分为六部分,内存调试相关、容器、算法、正则、IO和Graphic,每个模块都有各自的分工,他们之间的耦合度极低,几乎每个模块都可以拆出来独立使用,下面来分别介绍各个模块。内存调试我们知道,在C/C++中内存相关的东西是极难控制的,在使用不当时可能造成各种错误,轻则内存泄漏,重则程序崩溃。Read More
posted @ 2013-04-30 20:36 lwch Views(631) Comments(0) Edit
接上一篇我们已经得到了一个完整的ε-NFA,下面来说说如何将ε-NFA转换为DFA(确定有限自动机)。DFA的状态在DFA中,某个状态对应到ε-NFA中的若干状态,应此我们将会得到下面这样的一个结构。 struct DFA_State { set<EpsilonNFA_State*> content; bool bFlag;#ifdef _DEBUG uint idx;#endif DFA_State(con...Read More
posted @ 2013-02-23 23:34 lwch Views(1174) Comments(0) Edit
自动机关于自动机的说明,这里不不再复述,请到http://zh.wikipedia.org/wiki/自动机查看。表达式首先,我们规定表达式中只允许输入Char_Type和String_Type类型的字符。template <typename Char_Type, typename String_Type>class Rule{};ε-NFA的状态对于一个状态来说,我们并不需要知道他的任何信息在上面的代码中,为了调试方便,我为其加入了idx域,并为每个状态分配了一个唯一的ID。 struct EpsilonNFA_State {#ifdef _DEBUG ...Read More
posted @ 2013-02-15 20:33 lwch Views(1667) Comments(3) Edit
在上一篇中我们已经实现了一个简单的内存池,可以申请更大块的内存块来减少申请小块内存块时产生的内存碎片。在本篇中,我们需要为其加入内存泄漏的检测代码,以此来检测代码编写过程中的疏忽带来的内存泄漏。(callstack的显示暂时仅支持Windows)一、内存泄漏检测首先,改写obj和block结构,在obj中加入一个域released表示这个chunk是否被释放Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1structobj2{3#ifdefRead More
posted @ 2013-01-19 20:16 lwch Views(948) Comments(0) Edit
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> template<typenameT1,typenameT2>inlineconstboolcompare_type(T1,T2){returnfalse;}template<>inlineconstboolcompare_type(int,int){returntrue;}template<>inlineconstboolcompare_type(floaRead More
posted @ 2012-08-25 16:14 lwch Views(124) Comments(0) Edit
在STL中list是以双向链表的方式来存储的,应此使用给定的下标值来找到对应的节点所需的时间复杂度为O(n),相比vector直接使用原生指针会慢一些。因为是双向链表的关系,那么必然有一种结构来表示链表中的节点。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> template<typenameT>struct__list_node{__list_node<T>*prev;__list_node<T>*neRead More
posted @ 2012-08-09 21:23 lwch Views(1461) Comments(0) Edit