2012年9月12日
摘要: 1.在设计一个类时,可能会不自觉地与它的实现相联系(譬如,这个接口我这样设计,功能是否能最终实现?).这是一个很基本的错误. 设计时要把抽象与实现分离。理由很简单,一是简化了类的抽象,忽略对当前设计目的来说不重要的属性或特性,如飞机驾驶培训系统的飞机类,就可以忽略飞机的客舱内部布置;二是把抽象与实现分现,将使抽象的实现更灵活。如飞机的起降控制,只需提供两个接口,具体起飞控制流程和降落控制流程并不需要涉及。又如,酒店预订系统的房间类,可以不考虑房间的装修时间,室内陈设的新旧程度,提供退房接口,也不关心退房的具体流程。2.接口要最小化.通常,一个完美的类应该包含下面这些成员1~6。但是这不是所有类 阅读全文
posted @ 2012-09-12 21:09 bitbit 阅读(555) 评论(0) 推荐(0)
摘要: 哈希表散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。目录基本概念常用的构造散列函数的方法处理冲突的方法查找的性能分析实际应用字符串哈希函数基本概念 * 若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。 * 对不同的关键字可能得到同一散列地址,即key1≠key2,而f(k.. 阅读全文
posted @ 2012-09-12 14:12 bitbit 阅读(529) 评论(0) 推荐(0)
摘要: 为什么需要auto_ptr_ref这几天开始拜读侯捷先生和孟岩先生的译作《C++标准程序库:自修教程与参考手册》 。两位先生确实译功上乘,读得很顺。但是读到P55页关于auto_ptr_ref的讨论,却百思不得其解:为什么需要引入auto_ptr_ref这个辅助类呢?从书中描述来看,仿佛与拷贝构造函数 、右值 、类型转换 有关。于是,结合auto_ptr的源代码,google之、baidu之,找了一推资料,终于初步 搞清该问题。auto_ptr的拥有权C++常见的智能指针有std::auto_ptr、boost::shared_ptr、boost::scoped_ptr、boost::shar 阅读全文
posted @ 2012-09-12 14:00 bitbit 阅读(929) 评论(0) 推荐(0)