-
Recent Posts
Recent Comments
- Anonymous on 网上收罗的几道程序笔试题,并附上我的C++解答,有兴趣的可以看看,如果有好的题望不吝赐教。。。俺急需这样的题啊
- wwx on 这段时间用了WTL,感觉着实不错,很是轻巧。。。
- lin on 花了一晚上的时间完成了这个从CFileDialog派生的CFolderDialog类。。。
- let me give u a question !!! on 网上收罗的几道程序笔试题,并附上我的C++解答,有兴趣的可以看看,如果有好的题望不吝赐教。。。俺急需这样的题啊
- 过客 on 觉得VS2003的IDE已经挺好用的了,美中不足的是在代码查看、智能提示上还是不如VC6+VA,不过也没有大碍,所以也就没有到处找VA for .net的。
Archives
Categories
Meta
Category Archives: 技术
这段时间用了WTL,感觉着实不错,很是轻巧。。。
最显而易见的一个效果就是程序的体积会减小不少,我基于wtl写了一个SDI的程序(Release,无document/view architecture支持,静态链接atl库),并添加功能性代码2000多行(也作的模板封装),体积为112K,但是用MFC(Release,无document/view architecture支持,静态链接MFC库),程序通过VC向导自动生成,未添加任何代码体积就已有304k。 模板“被用到才被编译”的特性不觉中起到了缩小程序体积的效果。 wtl的使用也很方便,类、方法名称和MFC几乎一致,与MFC里的类几乎都可以一一对应起来,同时对CE也有支持(当然MFC也有for CE,不过通常我不会用,因为往往手持设备的硬件条件并不像PC那样富余),而且同样因为模板封装的缘故,使得其在CE上的程序体积既表现与纯sdk程序相差不大,wtl出来这么久,才用它实在是惭愧,俺早先固执的认为GUI的编程并不适合用模板的风格,看来对不了解的东西抱着既定的思维去看待必定会产生很大的偏差。 模板封装的方式也无意更叫巧妙、代码也更具高复用性。 附图,我写的那个wtl的程序(其实是老早就想写的Java Script菜单编辑器,托了很长时间上周末才开始写的。。。。:>,争取过年这段时间能利用上。。。)
实现了一个通用的内存流模板类,支持与标准流(stl)的高效直接通信,具有线程策略选择机制,也可用于对COM接口IStream的封装中。
早先简单封装了一个CByteStream类(继承了IStream COM接口),但是很低效,且不够灵活。利用周末的两天实现了如下定义的通用内存流类。template< class _Ty, template < class > class _ThreadingModel = DefaultThreadingModel, template < class > class _Allocator = ::std::allocator, class _Size = long, _Size _block_size = 4096>class MemoryStream: public _ThreadingModel< MemoryStream< _Ty, _ThreadingModel, _Allocator > >{public: typedef _Ty value_type; typedef value_type* pointer; typedef const value_type* const_pointer; typedef value_type& reference; typedef const value_type& const_reference; typedef _ThreadingModel< … Continue reading
Posted in 技术
6 Comments
网上收罗的几道程序笔试题,并附上我的C++解答,有兴趣的可以看看,如果有好的题望不吝赐教。。。俺急需这样的题啊
1、从字符串A中找到匹配字符串B的第一个子串的位置,以下的代码经测试比Plauger的stl(VC7)中的::std::string::find要快30%左右// 仿函数版本template < class Character = char, class Size = int >struct StringFinder{ typedef Size size_t; typedef Character char_t; size_t operator()( const char_t* lpszSource, const char_t* lpszSearch ) { // maybe the processing of the following line can delay to the caller if ( ( NULL … Continue reading
Posted in 技术
6 Comments
刚写的程序中犯的一个低级错误。。。。
typedef ::std::vector< int > IntArray; … IntArray theInts; … IntArray::iterator it1, it2; …. ::std::swap( it1, it2 );// error!, should be ::std::swap( *it1, *it2 ); 很早以前曾犯的另一个错误: IntArray theInts; … int* g_pTheInt; … g_pTheInt = &( *it ) or it;//无效,::std::vector会reallocate。。。 … Continue reading
Posted in 技术
Leave a comment
最近有一个把类似BT的东西与P2P整合在一起做一个服务的想法,虽然概念比较模糊,但是感觉应该会比较有意思
最近有一个把类似BT的东西与P2P整合在一起做一个服务的想法,虽然概念比较模糊,但是感觉应该会比较有意思(不知道是缺点还是有点,当每有新想法时,俺总想立即写出代码印证一下), 随即便先实现了一个我特定应用的http server(对于BT还是P2P应用来说,应该都会很有必要),呵呵,尽管很简陋,但的确是可行的。。。如下图。 But,虽然想做的事很多,人的精力毕竟有限啊,烦心的事也多,fuck!只有一件一件地先做好吧。恨不得做梦也梦见有人给我投资让我无忧无虑地专心写程序。。。
Posted in 技术
2 Comments
C++范型数据列表结构最终完成功能列表
基本类型:NullType//为了表示对Loki及其作者的敬意:>,其定义为typdef Loki::TL::NullType NullType; 宏定义:用来定义范型数据列表最多支持20种类型,可扩充PARAMEERLIST_…来增加支持的数据类型PARAMEERLIST(num)PARAMEERLIST_1 ~ PARAMEERLIST_20 模板类:ParameterList//范型数据列表MakeParameterList//定义范型数据列表,可最多支持40种类型,同样可以扩充,比宏定义的方式代码更简洁、可靠EraseType//从范型数据列表结构删除指定的类型,如果指定的类型有重复,只删除第一个EraseTypeAll//从范型数据列表结构删除与指定的类型相同的所有类型NoDuplicateTypes//从范型数据列表结构中得到无重复类型的列表结构TotalOfTypes//得到范型数据列表的类型数量TypeAt//从索引号得到范型数据列表中的类型IteratorAt//从索引号得到范型数据列表中的类型的iteratorTypeIndexOf//从类型得到其在范型数据列表的索引号 模板类(仿函数):ValueListPtrAt//从索引号得到范型数据列表对象中对应的列表指针Visit//遍历范型数据列表数据Clear//清除范型数据列表数据EraseFunctor//清除指定的范型数据列表数据FindFunctor//查找范型数据列表数据FindifFunctor//自定义规则查找范型数据列表数据 模板函数Insert//往范型数据列表中添加数据Erase//功能同EraseFunctor,不同的是Erase为真实的函数,而EraseFunctor为仿函数,下同Find//功能同FindFunctorFindif//功能同FindifFunctor
Posted in 技术
Leave a comment
完成最新版本的“真正包容各种类型”的数据链表结构,已经可以作实用。
// ParameterListDemo.cpp : Defines the entry point for the console application.// #include “stdafx.h”#include #include using namespace std; #include “ParameterList.h”using namespace face::PL; typedef struct tagPoint{ long x; long y;}_POINT, *_LPPOINT; typedef PARAMEERLIST(5)(int,char,string,double,_POINT) MyParameters; template < class T >struct Print{ typedef T _T; void operator ()( … Continue reading
Posted in 技术
2 Comments
:D俺苦思冥想终于实现了一个“真正”包容各种数据类型的C++参数列表类型。
通常情况下,我们描述一个物体总会提到物体的各种属性,在C++程序中,一个对象的属性就是用不同类型的数据来描述。比如: class Cat{public:??? Cat() {}??? ~Cat() {}??? int age;??? std::string name;}; 如何对这些“属性”做一个统一的管理呢,比如需要序列化的时候?当然上面的例子只有很少类型、很少量的数据,这种情况就好办多了。能否有这样的一种通用的数据结构具备如下能够包容不同数据类型数据的功能? DataList theList;theList.insert( 23 );theList.insert( “Tom” );//ColorType white;theList.insert( white ); 在C++里,或许可以借助像VARIANT这样的方式“比较象地”实现如上需求。但是VARIANT依然不是真正意义的泛型!并且不是强类型安全的。借助C++模板,我实现了这个结构,虽然使用形式还不像上例那么完美,但是已经达到还能让我满意的效果:),下面的就是我的ParameterList的使用Demo程序: // ParameterListDemo.cpp : Defines the entry point for the console application.// #include “stdafx.h”#include #include using namespace std; #include … Continue reading
Posted in 技术
4 Comments