程序设计——思想、方法、技巧
文章平均质量分 88
ylqndscylq
这个作者很懒,什么都没留下…
展开
-
简单的C++智能指针
本文链接:简单的C++智能指针 从书上看到了一个C++智能指针的例子,感觉不错,小改进了下,放出来。 智能指针的大意是:对普通的类(假设C)指针进行包装,内部维护一个引用计数。程序中只要使用智能指针包装类(假设SafeC)就行了。用的时候只用new C(), 然后把其给包装类进行构造,然后就随便用啦,不用担心C的析构问题了。 众所周知,C++中如果需要动态申请内存的话原创 2009-08-01 20:53:00 · 895 阅读 · 0 评论 -
单例模式与双重检查方案
本文链接:单例模式与双重检查方案一个类在全局只有一个实例的应用方式,即为单例模式。单例模式一般应用在全局性的工具之类的类上,如一个程序中的各种文件管理器(这个有可能进化成多例模式),或者是一些工具类(其实一些简单的单例类,写成纯静态类都可以,效果差不多的-_-!)。实现方式主要是单例类自己维护一个静态的自己类对象的引用,而使用这个类的时候通过一个静态方法获得那唯一的一个实例。代码见后面的原创 2009-08-01 22:45:00 · 1109 阅读 · 0 评论 -
原型模式与各种工厂模式,还有反射
本文链接:原型模式与各种工厂模式,还有反射 各种工厂模式与原型模式相对简单就不再具体介绍了,只有个小例子,见下。 原型模式与工厂模式实现上的区别主要在于:原型模式的工厂类维护一个产品的原型对象,并在工厂方法中返回原型对象的克隆;而工厂模式则直接返回新的产品对象。 只给出两种工厂的示例代码(C#),先给出产品示例:abstract class AbstractProduc原创 2009-08-09 11:03:00 · 2846 阅读 · 0 评论 -
堆与优先级队列
本文链接:堆与优先级队列 (优先级队列的完整代码在最后) 堆,是一个很有意思的数据结构。逻辑结构是树,一般为二叉树,每个节点的值都大于(小于)其子树中的任意节点。也就是说,使用堆结构的数组中,元素是部分有序的。而正是这个特点,使得在堆上,得到最大值(最小值)的时间复杂度为O(1),移除最大值(最小值)、插入元素、改变元素值(或者是删除位置已知的元素)的时间复杂度为O(lgn)。另外原创 2009-11-09 22:15:00 · 1056 阅读 · 0 评论