07 2015 档案
摘要:头文件/************************* 交换排序**************************///冒泡排序void BubbleSort(vector &v,int begin,int end);//快速排序void QuickSort(vector & v...
阅读全文
摘要:函数配接器bind1st(op,value) ----> op(value,param) //绑定op的第一个参数bind2st(op,value) ----> op(param,value)not1(op) ---->!op(param)not2(op) ---->!op(param1,par...
阅读全文
摘要:templatestruct Compare{ bool operator()(const T & ele1,const T &ele2){ return ele1 #include #include #include using namespace std;templatest...
阅读全文
摘要:定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态类型:行为类类图:class Memento{public: Memento(int level,int life,int time):m_level(level),m_li...
阅读全文
摘要:1. Client创建一个ConcreteCommand对象并指定他的Receiver对象2. 某个Invoker对象存储该ConcreteCommand对象3. 该Invoker通过调用Command对象的Execute操作来提交一个请求。若该命令是可撤销的,ConcreteCommand就在执行...
阅读全文
摘要:抽象主题(Subject):它把所有观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象。具体主题(ConcreteSubject):将有关状态存入具体观察者对象;在具体主题内部状态改变时,给所有登记过的观察者发出通知。抽象观察者(Obs...
阅读全文
摘要:状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。Context中有成员变量标志其状态,在每次请求过后,在具体状态类中设置其变化至的类。// State.cpp : Defines the entry point for the console appl...
阅读全文
摘要:职责链模式:对于一个请求,自己处理不了的,交于上级处理,形成了一个职责链,依次交于上级处理// Responsibility.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include...
阅读全文
摘要:递归的归并排序// MergeSorttest.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include using namespace std;void Merg...
阅读全文
摘要:我觉得Posix下比较好的一种方式int pthread_once(pthread_once_t *once_control, void (*init_routine) (void));功能:本函数使用初值为PTHREAD_ONCE_INIT的once_control变量保证init_routine...
阅读全文
摘要:// VistorMode.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include using namespace std;class B;class A{public: /...
阅读全文
摘要:定义:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。类型:行为类模式类图:结构对象中的元素类在accept的时候将自身作为参数 vistor类,Vistor类通过此参数获得一些相关信息。代码中:Person为Element抽象类 Man ...
阅读全文
摘要:两个类之间通信,不通过直接通信的方式,而是中间加一层类似于中介的类,中介者模式,就类比租房时找中介那会// Mediator.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include...
阅读全文
摘要:问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1#include using ...
阅读全文
摘要:Template模板方法模式作用:定义一个操作中的算法的骨架。而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。在基类的算法模板中的子算法,设为虚拟函数,将此虚拟函数放至子类中实现,类似思想可参考另一篇博文中的做法,http://www.cnblogs...
阅读全文
摘要:根据所给信息,选取不同策略;策略模式与工厂模式区别个人理解(工厂模式:通过所给信息建立不同的对象 策略模式:通过所给信息选择不同的策略 )用途不一样工厂是创建型模式,它的作用就是创建对象;策略是行为型模式,它的作用是让一个对象在许多行为中选择一种行为;关注点不一样一个关注对象创建一个...
阅读全文
摘要:自底向上法:这种方法一般需要恰当定义子问题“规模”的概念,使得任何子问题的求解都依赖于“更小的”子问题的求解。因而我们可以将子问题按规模排序,按由小至大的顺序进行求解。当求解某个子问题时,它所依赖的那些更小的子问题都已经求解完毕,结果已经保存。每个子问题只需要求解一次,当我们求解它(也是第一次遇到它...
阅读全文
摘要:引进一个二维数组Array[][],用Array[i][j]记录A[i]与B[j] 的LCS 的长度,sign[i][j]记录ARRAY[i][j]是通过哪一个子问题的值求得的,以决定搜索的方向。问题的递归式写成:回溯输出最长公共子序列过程:// LCSLength.cpp : Defines th...
阅读全文
摘要:// CMemory.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include using namespace std;class Base {public: virtual ...
阅读全文
摘要:// PointtoMemberFunction.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include using namespace std;class A{public: ...
阅读全文
摘要:《大话设计模式》中就Bridge模式的解释:手机品牌和软件是两个概念,不同的软件可以在不同的手机上,不同的手机可以有相同的软件,两者都具有很大的变动性。如果我们单独以手机品牌或手机软件为基类来进行继承扩展的话,无疑会使类的数目剧增并且耦合性很高,(如果更改品牌或增加软件都会增加很多的变动)两种方式的...
阅读全文
摘要:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。特点:(1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。(2) 装饰对象包含一个真实对象的引用(reference)(3) 装饰对象接受...
阅读全文
摘要:c++ 享元模式(flyweight)例子(大话设计模式上的例子 c++的):// FlyWeight.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #...
阅读全文
摘要:#include "stdafx.h"#includeusing namespace std;class A{public: virtual void show(){ coutshow(); pb->show(); delete pa; delete pb; ...
阅读全文
摘要:合成模式 , 结构型模式一种 还可以称为部分-整体模式 .经常会出现有树结构的情况 , 其中由单独的对象或者单独对象组成的合成对象组成 , 此时就需要利用一种方式来完成树结构的构建工作 .合成模式提供一个树结构中所有对象的统一接口, 规范树中单独对象和合成对象的构建过程 , 合成模式更像一个数据结构...
阅读全文
摘要:使用一个类来代理另一个类,如智能指针auto_ptr,对智能指针的操作,实际上是对代理的指针的操作#include using namespace std;templateclass auto_ptr{public: explicit auto_ptr(T * p = 0){ p...
阅读全文
摘要:门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。例子如下,完成program任务,内部完成 code compile run任务#include "iostream"using namespace std;clas...
阅读全文
摘要:适配器模式,调整使之符合另一接口1类适配器模式,子类继承Adaptee类#include using namespace std;//类适配器class Target{public: virtual void action() = 0;};class Adaptee{public: vo...
阅读全文
摘要:创建者模式是创建型模式中最负责的一个设计模式了,创建者负责构建一个对象的各个部分,并且完成组装的过程,我们可以这么理解创建者模式,创建者模式类似与一个步骤基本固定,但是每个步骤中的具体形式却又可以变化的这类对象的创建。#includeusing namespace std;class Builder...
阅读全文
摘要:原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象用c++做此模式时,注意深拷贝与浅拷贝//原型设计模式#include #include "string"using namespace std;class Prototype{ //基类提供clone接口publ...
阅读全文
摘要:百度百科:抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据LSP原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,...
阅读全文
摘要:工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品...
阅读全文
摘要:#include#include using namespace std;class Fruit{public: virtual void show()=0;};class Apple:public Fruit{public: void show(){ coutshow()...
阅读全文