代码改变世界

随笔分类 -  C++相关

建造者模式

2015-01-19 14:42 by itwolf, 231 阅读, 收藏,
摘要: 一、简介:1、建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。2、建造者模式通常包括下面几个角色:(1)builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。(2)ConcreteBuilder:继承builder类,针对不同的商业逻辑,具体... 阅读全文

外观模式

2015-01-19 09:10 by itwolf, 187 阅读, 收藏,
摘要: 一、简介1、外观模式为子系统中的一组接口提供一个统一的高层接口,这一接口使得子系统更加容易使用。2、举例 :房间里有3盏灯,每一盏灯都有一个开关控制它的开和关两种状态,由于它们经常一起开关,所以就设置一个总的开关,一下子同时控制所有的灯。3、UML图4、所属类别:结构型二、C++程序 1 // 外观... 阅读全文

C++类的复制构造函数和赋值运算符

2015-01-18 21:09 by itwolf, 845 阅读, 收藏,
摘要: 前言:C++面向对象的编程过程中,凡是在类中运用到动态内存分配的时候总是会写一个显示的复制构造函数和赋值重载运算符,本文将结合C++ Primer Plus一书的内容分析下原因:一、在C++编程中如果没有编写下列成员函数,系统会自动的提供: (1)构造函数 (2)析构函数 (3)地址运算符 (4)赋... 阅读全文

模板方法模式

2015-01-18 10:54 by itwolf, 185 阅读, 收藏,
摘要: 一、简介1、模板方法模式定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2、说白了模板方法模式就是将一些通用的步骤放在基类中,而将不同的环节放在子类中,以减少代码的重用。3、举例:考试中抄写题目并做答案,老师抄的题目对于每位... 阅读全文

原型模式

2015-01-17 11:45 by itwolf, 212 阅读, 收藏,
摘要: 一、简介1、原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。2、为什么会用到原型模式?(1)既然可以直接new,为什么会用到原型模式?这个可以从两个角度来说,第一,时间消耗角度:如果创建实例的构造函数非常的复杂,在执行这个构造函数时会消耗较长的时间,这时如果需要一个跟刚刚实... 阅读全文

抽象工厂模式

2015-01-16 11:13 by itwolf, 186 阅读, 收藏,
摘要: 一、相关介绍1、抽象工厂模式提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类。2、UML图3、所属类别:创建型二、C++程序 1 // 抽象工厂模式.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #includ... 阅读全文

工厂方法模式

2015-01-16 10:41 by itwolf, 224 阅读, 收藏,
摘要: 一、相关介绍1、工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。2、UML图3、所属类别:创建型二、C++代码// 工厂方法模式.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing na... 阅读全文

C++初始化列表

2015-01-16 10:19 by itwolf, 787 阅读, 收藏,
摘要: 一、什么是初始化列表与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段二、构造函数执行分为初始化和构造两个阶段,且初始化化阶段优先于计算阶段三、一个好的原则是,能使用初始化列表的时候尽量使用初始化列表因为初始化列表有时... 阅读全文

代理模式

2015-01-15 10:48 by itwolf, 191 阅读, 收藏,
摘要: 一、相关介绍1、代理模式为其他对象提供一种代理以控制对这个对象的访问2、UML图3、所属类别:结构型3、C++程序 1 // 代理模式.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include 6 using namespace st... 阅读全文

装饰模式

2015-01-15 09:18 by itwolf, 537 阅读, 收藏,
摘要: 一、相关介绍1、装饰模式是为已有功能动态地添加更多功能的一种方式。2、举例:QQ中的服装秀可以动态的搭配不同的服饰来进行修饰。3、UML图4、所属类别:结构型其实其实现就是在具体的装饰类构造过程的输入参数可以是people类,也可以是具体的装饰类,每次添加新装饰功能后,再调用输入参数类的功能。二、C... 阅读全文

策略模式

2015-01-13 13:17 by itwolf, 194 阅读, 收藏,
摘要: 一、策略模式的相关介绍1、定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。2、举例:商场中卖商品有原件、打折和满m元就减n元多种策略,可以将它们封装起来,然后通过策略类让这些方法可以被客户端选择。3、UML图:4、所属类... 阅读全文

简单工厂模式

2015-01-12 12:57 by itwolf, 230 阅读, 收藏,
摘要: 一、简单工厂模式的相关概念:1、定义:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式。其核心思想就是有一个专门的工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。2、举例:如卖水果,每种水果有不一样的价钱,... 阅读全文

散列表(哈希表)

2015-01-05 15:32 by itwolf, 339 阅读, 收藏,
摘要: 序言:如果将一系列的记录按照关键字的某种函数存储,那么在查找某个数据的时候就可以直接通过关键字计算出来了,而不在需要“比较”,这样会非常高效,这就是散列技术。所以散列技术就是: 存储位置=f(关键字) 不管是记录的存储还是查找,都用这种方法散列技术具有很高的效率,但是使用起来有一些限制。如1个关键字... 阅读全文

转载:最小生成树-Prim算法和Kruskal算法

2014-12-31 09:40 by itwolf, 242 阅读, 收藏,
摘要: 本文摘自:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/30/2615542.html最小生成树-Prim算法和Kruskal算法Prim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索... 阅读全文

二叉排序树和平衡二叉树

2014-12-24 11:18 by itwolf, 1457 阅读, 收藏,
摘要: 二叉排序树又称二叉查找树或二叉搜索树。 它一棵空树或者是具有下列性质: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;查找的时候总是从根节点进行比较然后逐级往下进行。由于它是一种树形... 阅读全文

堆排序

2014-12-23 09:39 by itwolf, 223 阅读, 收藏,
摘要: 堆排序是对简单选择排序算法的一种改进,在每次选择最小记录的同时,根据比较结果对其他记录做出相应的调整。堆是具有下列性质的完全二叉树:每个节点的值都大于(小于)或者等于其左右孩子节点的值,为大顶堆(小于)。堆排序的基本思想是:从最后一个含有叶子节点的节点开始将待排序列构造成一个堆,然后将堆顶元素与末尾... 阅读全文

快速排序

2014-12-22 10:28 by itwolf, 307 阅读, 收藏,
摘要: 如果说希尔排序是简单插入排序的升级,堆排序是简单选择排序的升级,那么快速排序就是冒泡排序的升级了。相对于冒泡排序,快速排序增大了记录比较和移动的距离,将关键字较大的记录移动到后面,较小的移动到前面,从而减少总的比较和移动次数。快速排序的基本思想:通过每一趟排序都将待排序的记录按照选定的关键字分成两部... 阅读全文

递归程序设计

2014-12-21 10:28 by itwolf, 324 阅读, 收藏,
摘要: 一般定义: 程序调用自身的编程技巧称为递归(recursion)。递归做为一种算法设计技巧,是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。递归过程总是一个过程还未执行完就执行另一个过程(但是执行另一过程前会保存未执行完时候的变量值),如此反复,一直执行到边界条件,执行完余下的... 阅读全文

希尔排序

2014-12-17 13:47 by itwolf, 275 阅读, 收藏,
摘要: 1、希尔排序介绍希尔排序是对直接插入排序算法的一种改进,当记录较少或者记录本身基本有序的时候直接插入排序的优势非常明显,所以希尔排序就是通过人为的创造这两个条件,然后进行插入排序,基本思想是设置一个增量increment,然后将原始记录“看成”increment组数据,并对每组数据进行直接插入排序,... 阅读全文

结构体struct和typedef后面接指针的含义

2014-12-11 22:02 by itwolf, 2325 阅读, 收藏,
摘要: typedef struct file{...}FileInfo, *FileP;上述程序中定义了一个结构体,结构体的名字为file,并且给其指针 取个别名为FileP,所以后续程序中出现FileP就相当于是struct file * 阅读全文