闲云blog

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年2月15日

摘要: #include <string.h>#ifdef DMALLOC#include <dmalloc.h>#else#include <stdlib.h>#endif#include "hash.h"#ifndef __USE_ISOC99#define inline#endifstruct hashentry{void *key;void *data;struct hashentry *next;};struct _hashtable{unsigned int (*gethash)(void *);int (*compare)(void *, void * 阅读全文
posted @ 2011-02-15 11:24 闲云blog 阅读(511) 评论(0) 推荐(0) 编辑

摘要: 2011-02-14 22:22 by MichaelYin, 979 visits, 网摘, 收藏, 编辑以前对于这两个集合类的认识只是停留在是否支持泛型上,这几天趁着看算法导论的机会,把两个类的内部的实现机制好好的了解了一下。Hashtable和Dictionary从数据结构上来说都属于Hashtable,都是对关键字(键值)进行散列操作,将关键字散列到Hashtable的某一个槽位中去,不同的是处理碰撞的方法。散列函数有可能将不同的关键字散列到Hashtable中的同一个槽中去,这个时候我们称发生了碰撞,为了将数据插入进去,我们需要另外的方法来解决这个问题。链接法(chaining)在链 阅读全文
posted @ 2011-02-15 11:14 闲云blog 阅读(360) 评论(0) 推荐(0) 编辑

摘要: static_cast、dynamic_cast、reinterpret_cast、和const_cast关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。static_cast用法:static_cast < type-id > ( express 阅读全文
posted @ 2011-02-15 10:56 闲云blog 阅读(111) 评论(0) 推荐(0) 编辑

摘要: 一 利用剪贴板进行进程间通信void CClipboardDlg::OnBtnSend(){// TODO: Add your control notification handler code hereif(OpenClipboard()) //打开剪贴板{ EmptyClipboard(); //释放剪贴板中数据的句柄并分配剪贴板所有权给当前窗口 CString str; HANDLE hClip; char *pBuf; GetDlgItemText(IDC_EDIT_SEND,str); hClip=GlobalAlloc(GMEM_MOVEABLE,str.GetLength()+1 阅读全文
posted @ 2011-02-15 10:34 闲云blog 阅读(391) 评论(0) 推荐(0) 编辑