自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(26)
  • 收藏
  • 关注

转载 最大子数组算法

1. 求最大的子数组的和 题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。 如果不考虑时间复杂度,我们可以枚举出所有...

2012-10-10 17:25:00 117

转载 洗牌算法

高效生成随机数组算法在实际的程序开发中也大量的进行使用。例如在棋牌类的游戏开发中的斗地主、双扣等,在每次游戏开始时,都需要打乱扑克牌的顺序,然后再将打乱以后的扑克牌依次发放给每个游戏玩家。而这种打乱扑克牌顺序的算法通常就被称作洗牌算法。 从程序开发的角度看洗牌算法,实际上生成的就是一组规则的随机数字,例如对于一副扑克牌来说,在程序中如果需要代表一副扑克牌,根据扑克牌的特点(每幅牌包含5...

2012-10-10 16:25:00 133

转载 随机数

首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明。 1. rand(产生随机数) 表头文件:#include<stdlib.h> 定义函数:int rand(void) 函数说明:因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand(...

2012-10-10 11:46:00 99

转载 设计模式小结

1. 单件模式 单件模式是允许一个类有且仅有一个实例的方法。 2. 命令模式 命令模式将每个命令,也就是函数封装为“函数对象”,以便将其以参数的形式传递给其他函数或对象,告诉它们要执行特定的操作。命令模式中所有的“命令”都会被执行。 3. 代理模式 代理模式强调的是“代理”,它只有一个实现类,代理类控制对其实现类的访问。 4. 状态模式 状态模式虽然也有“代理”,但它可以有...

2012-10-07 16:18:00 81

转载 访问者模式

用访问者模式进行多重派遣 访问者模式(Visitor)的目标是将继承层次结构上的操作与这个层次结构本身分开。这是一个相当古怪的动机,因为在向对象编程中所做的大部分工作是将数据和操作组合在一起形成对象,并利用多态性根据对象的确切类型自动选择操作的正确变化。 利用访问者模式将操作从类的继承层次结构中提取出来置入一个独立的外部层次结构。“主层次结构”包含一个函数visit(),该函数接受任...

2012-10-07 16:13:00 79

转载 观察者模式

观察者(Observer)模式用于解决一个相当常见的问题:当某些其它对象改变状态时,如果一组对象需要进行相应的更新,那么应该如何处理呢?这可以在“文档-视图设计模式”中见到。假定有一些数据(即“文档”)和两个视图:一个图形视图和一个文本视图。在更改“文档”数据时,必须通知这些视图更新他们自身,这就是观察者模式所要完成的任务。 // Observer.h// The Observer...

2012-10-05 17:42:00 69

转载 构建器模式

构建器模式用于创建复杂对象。GoF指出,构建器模式和抽象工厂模式主要的区别就就是,构建器模式一步步创建对象,所以及时展开输出创建过程似乎很重要。此外“主管(BicycleTechnician)”获得一个切片的流(stream),次且将这些切片传递给构建器,每个切片用来执行创建过程中的一步。 下面有一个例子,作为模型的一辆自行车按照其类型(山地车、旅行车或赛车)来选择零部件组装一辆自行车...

2012-10-02 21:12:00 76

转载 虚构造函数

使用工厂方法模式的主要目标之一就是更好地组织代码,使得在创建对象时不需要选择准确的构造函数类型。也就是说,可以告诉工厂:“现在还不能确切地知道需要什么类型的对象,但是这里有一些信息。请创建类型适当的对象。” 此外,在构造函数调用期间,虚拟机制并不起作用(发生早期绑定)。在某些情况下这是很棘手的事情。例如,在Shape程序中,在Shape对象的构造函数内部建立一既需要的东西然后由draw...

2012-10-02 15:08:00 135

转载 抽像工厂模式

抽像工厂(Abstract Factory)模式看起来和前面看到的工厂方法很相似,只是他使用若干工厂方法(Factory Method)模式。每个工厂方法模式创建一个不同类型的对象。当创建一个工厂对象时,要决定将如何使用由那个工厂创建的所有对象。 假设要创建一个通用的游戏环境,并且希望它能支持不同类型的游戏。请看以下程序是如何使用抽象工厂模式的: #include <iostr...

2012-10-02 10:20:00 69

转载 多态工厂模式

在工厂模式的例子中,静态成员函数static factory()迫使所有创建对象的操作都集中在一个地方,因此这个地方就是唯一需要修改代码的地方。然而,GoF强调工厂方法模式的理由是,可以使不同类型的工厂派生自基本类型的工厂。工厂方法模式事实上是多态工厂模式的一个特例。 #include <iostream>#include <map>#include &...

2012-10-01 18:42:00 96

转载 工厂模式

工厂模式强制用一个通用的工厂(factory)来创建对象,而不允许将创建对象的代码散布于整个系统。如果程序中所有需要创建对象的代码都转到这个工厂执行,那么再增加新对象时的所要做的全部工作就是只需修改工厂。这种设计是众所周知的工厂方法的一种变体。 #include <iostream>#include <stdexcept>#include <cst...

2012-10-01 16:48:00 79

转载 职责链模式

职责链(Chain of Responsibility)模式:在提出一个请求时,一个链序列中的每个策略都试图满足这个请求。这个过程直到有一个策略成功满足该调用或者到达链序列的末尾才结束。 除了调用一个函数来满足某个请求外,链中的多个函数都有机会满足这个请求,因此它有点专家系统的意味。由于职责链实际上就是一个链表,它能够动态创建,因此它可以看做是一个更一般的动态构建的switch语句。 ...

2012-10-01 12:54:00 59

转载 策略模式

模版方法模式是“坚持相同的代码”,而被覆盖的函数是“变化的代码”。然而,这种变化在编译时通过继承被固定下来。按照“组合优于继承”的格言,可以利用组合来解决将变化的代码从“坚持相同的代码”中分开的问题,从而产生策略(Strategy)模式。这种主法有一个明显的好外:在程序运行时,可以插入变化的代码。策略模式也加入了“语境”,它可以是一个代理类,这个类控制着对特定策略对像的选择和使用——就像...

2012-10-01 12:16:00 69

转载 模版方法模式

应用程序结构框架允许从一个或一组类中继承以便创建一个新的应用程序,重用现存类中几乎所有的代码,并且覆盖其中一个或多个函数以便自定义所需要的应用程序。应用程序结构框架中的一个基本的概念是模版方法(Template Method)模式,它很典型地隐藏在覆盖的下方,通过调用基类的不同函数(这时覆盖了其中一些函数以创建应用程序)来驱动程序运行。 模版方法的一个重要特征是它的定义在基类中(有时作...

2012-09-30 23:30:00 62

转载 适配器模式

适配器(Adapter)模式接受一种类型并提供一个对其他类型的接口。This is useful when you’re given a library or piece of code that has a particular interface, and you’ve got a second library or piece of code that uses the same ...

2012-09-30 22:55:00 61

转载 状态模式

状态模式产生一个可以改变其类的对象,当发现大多数或者所有函数中都存在有条件的代码时,这种模式很有用。和代理模式一样,这种模式通过一个前端对象来使后端实例对象履行其职责。然而,在前端对象生存其间,状态模式从一个实现对象到另一个实现对象进行切换,以实现对于相同函数调用产生不同的行为。 例如,在青蛙王子童话中,青蛙王子依照其所处的状态而有不同的行为。先通过测试一个bool变量来实现: //...

2012-09-30 21:07:00 67

转载 代理模式

代理(Proxy)模式和状态(State)模式都提供一个代理(Surrogate)类。代码与代理类打交道,而做实际工作的类隐藏在代理类背后。当调用代理类中的一个函数时,代理类仅转而去调用实现类中相应的函数, 代理模式和状态模式的区别很简单:代理模式只有一个实现类,而状态模式可以有多个实现。代理模式和状态模式的应用也不相同:代理模式控制其对实现类的访问,而状态模式动态地改变其实现类。 ...

2012-09-30 20:30:00 51

转载 命令模式

命令模式就是一个函数对像:一个作为对象的函数。通过将函数封装为对象,就能够以参数的形式将其传递给其他函数或都对象,告诉它们在履行请求的过程中执行特定的操作。可以说,命令模式是携带行为信息的信使。 #include <iostream>#include <vector>using namespace std;class Command {pub...

2012-09-30 19:48:00 54

转载 单件模式

单件模式,是允许一个类有且仅有一个实例的方法。 #include <iostream>using namespace std;class Singleton { static Singleton s; // 创建静态对象 int i; Singleton(int x) : i(x) { } // 禁止构造函数 Single...

2012-09-30 18:02:00 80

转载 内存对界

1. 内存对界原理 在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。例如: struct stru...

2012-09-30 14:01:00 140

转载 堆和栈的区别

1、管理方式不同 对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。 2、空间大小不同 一般来讲在32位系统下,堆内存可以达到4G的空间,从这个角度来看堆内存几乎是没有什么限制的。但是对于栈来讲,一般都是有一定的空间大小的,例如,在VC6下面,默认的栈空间大小是1M(好像是,记不清楚了)。当然,我们可以修改: ...

2012-09-29 15:44:00 64

转载 字符串

1. 字符串字面值 1.1 字符串字面值是一串常量字符,字符串字面值常量用双引号括起来的零个或多个字符表示。 "Hello World!" // simple string literal "\nCC\toptions\tfile.[cC]\n" // string literal using newlines and tabs "" // empty...

2012-09-29 13:21:00 62

转载 sizeof 和 strlen

1. sizeof 1.1 sizeof是一个独立的运算符,不是函数。sizeof给我们提供有关数据项目所分配的内存的大小。例如: cout << sizeof(long) << endl; // 输出: 4 cout << sizeof(double) << endl; // 输出:81.2 如果将sizeof应用于一个...

2012-09-28 23:08:00 147

转载 内存分配

一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(静态区)(static)—全局变量和静态变量的...

2012-09-28 15:32:00 78

转载 修改并上传SyntaxHighlighter源码个性化博客代码风格

或许是我太苛刻了,用了博客园默认的SyntaxHighlighter工具高亮代码后,总不尽人意。首先是行间距太大,这对于只贴小量的代码没什么问题。但如果代码很长,将会很大程度上影响阅读效率。其次,博客园似乎修改了SyntaxHighlighter原版代码不能自动换行的问题,但改得不彻底,又引出了新的问题:自动换行后会导致行号不连惯,并且产生多行注释时的Bug。 但也有改的好的地方,比如...

2012-09-27 22:12:00 147

转载 Winows Live Writer + SyntaxHighlighter + cnblog的配置与使用

1. MetaWeblog API地址: cnblogs格式为:http://www.cnblogs.com/你的博客名/services/metaweblog.aspx cppblog格式为:http://www.cppblog.com/你的博客名/services/metaweblog.aspx (在Options » Configure 页面中可以查到)。 ...

2012-09-26 18:55:00 79

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除