2009年12月17日
摘要: 做这个小demo(下载)主要是为了解决如何在ListView上排序大量数据的问题。 这个Demo窗口上的ListView有一百万个项目,点了“Sort”之后就会开始排序。但这个排序跟以往的不同,你看到哪里它排到哪里,但这个排序不仅仅是在窗口内部排,而是你看到的内容都是正确的。 举个例子,你在浏览1000-1020条的时候,我会开始排序(当然有一点点延迟,不过不会卡窗口),然后确保1000-1020一定是【全局中的】第1000小到第1020小的,就如同全部排过序一样。而且还有一个副作用,就是小于1000的全部比1000小,大于1020的全部比1020大(这可以让你继续浏览的时候排序迅速收敛,而且这听起来应该很熟悉,嘿嘿)。 欢迎下载并试用。 ------------------------------------------------------------------------------------------ 下面是代码(如果不想下载可以直接看,不过强烈建议亲身体验) --------------------- 阅读全文
posted @ 2009-12-17 10:42 陈梓瀚(vczh) 阅读(3110) 评论(11) 推荐(2) 编辑
  2008年11月9日
摘要: 作者(不是我)信息: 华南理工大学软件学院本科07级(现大二) 进入大学前玩过几个星期pascal,高考后的暑假重新学编程 程序信息:(下载请移步这里) 学习C++一年后的作品。 内含所有代码,以及VC++工程文件。 一个程序,输入只有匹配没有捕获的正则表达式,输入被匹配的字符串,输出字符串中符合正则表达式要求的部分。 支持括号改变优先级,[字符集]和[^字符集],少量转义(\d等),循环(+*... 阅读全文
posted @ 2008-11-09 21:36 陈梓瀚(vczh) 阅读(3602) 评论(3) 推荐(0) 编辑
  2008年9月6日
摘要: 我们知道Yacc和Bison都是产生C++的代码作为编译器的前端的。但是有时候我们需要动态地产生一个编译器前端,极端一点讲,譬如“文法调试器”。调试器总不能动态生成.y文件,让yacc编译,让gcc再度编译,然后execute,最后将程序的输出结果读进来。这样就太麻烦了,于是我们需要重新写一个生成编译器前端的程序。 阅读全文
posted @ 2008-09-06 18:56 陈梓瀚(vczh) 阅读(2214) 评论(2) 推荐(0) 编辑
  2008年8月27日
摘要: 大概一年前曾经用C++开发了一个可以在C++中直接写上下文无关文法的上下文无关文法分析器。这玩意儿叫Syngram。Syngram曾经做了两次,第一次做成了用一个类去读文法文件,后来不爽就改成了直接在C++里面写的。我弄了一个叫Term的类,重载了一些操作符,于是你可以搞分支、可选、错误处理等复杂的文法推导式。现在打算做一个周边工具。 阅读全文
posted @ 2008-08-27 21:07 陈梓瀚(vczh) 阅读(5269) 评论(18) 推荐(0) 编辑
  2008年8月15日
摘要: 原本在C++博客申请了个东西,后来发现虽然我写的代码基本都是C++,不过贴上博客的东西却跟C++没什么关系,所以以后打算在这里也写些啥。不过因为这里没啥东西,原来的博客也才50多篇文章。还是要慢慢积累起来的…… 阅读全文
posted @ 2008-08-15 22:39 陈梓瀚(vczh) 阅读(3404) 评论(8) 推荐(0) 编辑