07 2013 档案
摘要:地址:http://blog.csdn.net/wuzhekai1985/article/details/6665542,仅供学习用。适配器:STL实现了一种数据结构,称为双端队列(deque),支持前后两段的插入与删除。STL实现栈和队列时,没有从头开始定义它们,而是直接使用双端队列实现的。这里双端队列就扮演了适配器的角色。队列用到了它的后端插入,前端删除。而栈用到了它的后端插入,后端删除。假设栈和队列都是一种顺序容器,有两种操作:压入和弹出。
阅读全文
摘要:http://blog.csdn.net/wuzhekai1985/article/details/6665197。仅供参考。策略模式:实现替换功能,如cache替换算法:当发生Cache缺失时,Cache控制器必须选择Cache中的一行,并用欲获得的数据来替换它。所采用的选择策略就是Cache的替换算法。实现方式有三种,以上连接中已经给出
阅读全文
摘要:地址:http://blog.csdn.net/wuzhekai1985/article/details/6665869。仅供自己参考学习。单例模式:保证一个类仅有一个实例,并提供一个访问它的全局节点。定义一个Instance操作,允许客户访问它的唯一实例。客户只能通过Singleton的Instance操作访问一个实例。
阅读全文
摘要:看链接:http://blog.csdn.net/wuzhekai1985/article/details/6667020。纯属为自己学习所使用。对于原型模式的理解:就如连接中所说,制作简历时先手写一个然后使用打印机进行复印得到复印件。这样一旦有错误需要修改只需要修改手写稿然后再复印即可。创建时不同的简历对应不同的类,然后再main函数实现的过程中进行复印(clone)即可;对于模板模式:还是对于简历问题,应聘的公司给应聘者一张简历,上面有各种信息,然后让应聘者进行填写即可。实现是可以创建基类,基类中的各个因素包含的为简历上的各种信息,但是实现是在不同的子类中进行实现的。子类代表不同的人,基类
阅读全文
摘要:链接转自:http://blog.csdn.net/wuzhekai1985/article/details/6667467主要思想是:首先有个指挥家思想者将大体的设计思路设计出来,然后寻找一部分工人来按照设计者的思想来进行操作。
阅读全文
摘要:分析源于:http://blog.csdn.net/wuzhekai1985/article/details/6660462自己的理解:简单工厂模式:有两种型号的单核处理器,通过一个工厂能生产出来;工厂方法模式:有两种型号的单核处理器,通过不同的两个工厂来生产出来;抽象工厂模式:有两种不同类型的处理器分别为单核处理器和双核处理器,单核处理器又有两种型号A和B,双核处理器也有两种型号A和B。这样有两个工厂,一个工厂生产A型号的处理器,另一个工厂生产B型号的处理器。
阅读全文
摘要:class TimeKeeper{public: TimeKeeper() ; ~TimeKepper() ; ...} ;class AtomicClock:public TimeKeeper{...}// 原子钟class WaterClock:public TimeKeeper{...}// 水钟class WristWatch:public TimeKeeper{...}// 腕表根据工厂模式,会返回一个base class指针指向新生成的derived class对象。TimeKeeper* getTimeKeeper() ;// 返回一个指针,指向一个TimeKe...
阅读全文
摘要:本文系转载,转载地址http://blog.sina.com.cn/s/blog_59b6af690100zj3l.html,只供自己学习使用。假设现在有三种产品,是玩具,都是由三部分组成,头,身体,和脚丫,现在要实现生产不同组合产品的功能,例如第一种产品是红头,绿身体,黑脚第二种产品是绿头,黑身体,红脚第三种产品是黑头,红身体,绿脚丫现在现写一个build基类,class builder{public: virtual void buildpartHead(const char* str="pre-define")=0; virtual void buildpartBod
阅读全文
摘要:1. 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。2. 别名 Kit3. 动机 假设我们要开发一款游戏,当然为了吸引更多的人玩,游戏难度不能太大 (让大家都没有信心了,估计游戏也就没有前途了),但是也不能太简单 (没有挑战性也不符合玩家的心理)。于是我们就可以采用这样一种处理策略:为游戏设立等级,初级、中级、高级甚至有BT 级。假设也是过关的游戏,每个关卡都有一些怪物 (monster)守着,玩家要把这些怪物干掉才可以过关。作为开发者,我们就不得不创建怪物的类,然后初级怪物、中级怪物等都继承自怪物类(当然不同种类的则需要另创建类,但是模式相同)。在每个关卡,我们.
阅读全文
摘要:1. 当只写一个空类的时候,编译器会为他声明一个copy构造函数,一个copy assignment函数和一个析构函数。如下:如果写下:class Empty{ };编译器就会实现以下代码:class Empty{ Empty(){} //默认构造函数 Empty(const Empty& rhs ) {} //复制构造函数 ~Empty() {} //析构函数 Empty& operator=( const Empty& rhs ) {} // 复制赋值操作符};编译器产生的是non-virtual函数。默认产生以上四种构造函数。如果要使这些编译器默...
阅读全文
摘要:#include using namespace std;#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define OVERFLOW -2#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1typedef int ElemType;typedef int status;//线性表结构typedef struct{ ElemType *elem; int length; int listsize;}SqList;//初始...
阅读全文
摘要:对于内置类型以外的初始化责任落在构造函数身上。如下:class PhoneNumber{};class ABEntry{public: ABEntry( const string& name, const string& address, const list& phones );private: string theName; string theAddress; list thePhones; int numTimesConsulted;};ABEntry::ABEntry( const string& name, const string& add
阅读全文
摘要:一些成员函数改变对象,一些成员函数不改变对象。例如:int Point::GetY(){ return yVal;} 这个函数被调用时,不改变Point对象,而下面的函数改变Point对象:void Point:: SetPt (int x, int y){ xVal=x; yVal=y;} 为了使成员函数的意义更加清楚,我们可在不改变对象的成员函数的函数原型中加上const说明: class Point { public: int GetX() const; int GetY() const; void SetPt (int, int); void OffsetPt (int, i...
阅读全文
摘要:char greeting[] = "hello";char* p = greeting; //non-const pointer,non-const dataconst char* p = greeting; //non-const pointer, const datachar* const p = greeting; //const pointer,non-const dataconst char* const p = greeting; //const pointer, const ...
阅读全文
摘要:#include #include using namespace std;int main(){ int strwide; cin >> strwide; pair rotor[3][1000]; pair rotor_instead[3][1000]; string input; int t = 0; while( t > input; if ( input.size() == strwide ) { char start_1 = 'a'; char start_els...
阅读全文
摘要:#include #include #include using namespace std;int main(){ string array[30][2]; string a,b; int t=0; while( cin >> a ) { if ( a == "0" ) { break; } else { cin >> b; } array[t][0] = a; array[t][1] = b; t++; } for ( int i = 0; i < t; i++ ) { const char *p = array[i][0].c_str()
阅读全文
摘要:#include using namespace std;int main(){ int **array = new int *[100]; for ( int i = 0; i > x >> y ) { array[t][0] = x; array[t][1] = y; t++; } for ( int i = 0; i 100 && array[i][1] > 100 && t1 == 0 && t2 == 0 ) { win = array[i][0]; if ( win 100 && array[i
阅读全文

浙公网安备 33010602011771号