自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 C++ 实现判断一个输入日期是星期几,是一年中的第几天

/*通过输入年月日,计算出这一天是星期几,计算这一天是这一年的多少天,判断这一年是否为闰年*/#includeusing namespace std;struct time{int year;int month;int day;unsigned int weekday;};void initialtime(time & t);//输入初始化时

2015-04-15 08:11:52 8522

原创 求职总结

终于找打一份可以接受的工作了,我大概从8月25号开始,到10月23号也就是昨天才算是告一段落。下面细数一下之前有过的面试和笔试经历吧。说明一下自己的一些情况,本人电工学院真水硕一枚,电路搞不下去了,自己学习的软件开发,主要是学习了C++,数据结构,常用算法,设计模式;第一个招聘开始的是华为,在八月的时候就开始了提前批的机试,机试是三道编程题,可以去刷刷华为的OJ,网上可以搜

2015-10-27 21:08:03 743

原创 C++的逆波兰表达式的求解

逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。逆波兰结构由弗里德里希·鲍尔(Friedrich L. Bauer)和艾兹格·迪科斯彻在1960年代早期提议用于表达式求值,以利用堆栈

2015-07-26 14:45:09 6473

原创 C++栈的顺序存储和链式存储的实现

栈是最常见的数据结构,其特点是后进先出(Last In First Out)也是链表的特殊形式,所以和链表一样,有两种存储方式,第一是顺序存储的栈,方便快速读写数据,但是栈的长度必须先固定;第二种是链式存储的栈,可以不用定义栈的长度,可以大量插入数据,如果不是物理内存使用完的话,可以存储大量的数据。首先,顺序存储的栈的实现,代码如下:#pragma once#define MAXSIZE

2015-07-25 16:36:30 2285

原创 C++ 模版类的单向循环链式线性表

基于之前做的单向链式线性表http://blog.csdn.net/shiwazone/article/details/47000191,改进下,实现了循环链表,相对应单向链表,循环链表将尾节点的指针域指向头节点,加入循环,可以让我们在查找某一个index的节点时,可以先判断一下位置和链表长度的关系,如果index处于链表的前半部分,我们可以从头节点遍历查找,如果处于后半部分,我们可以从尾节点往前

2015-07-23 08:56:03 1113

原创 静态链表的C++实现

静态链表是使用数组实现的可以快速插入和删除数据的链表,静态链表和链式单链表比的缺点在于链表的长度只能初始化设置好,而相对应普通的顺序存储的链表,静态链表不能实现快速的读写任意的元素。当然静态链表给了我们一种思考方式,当我们在特定状态下,不能使用指针操作时,我们可以使用一种替代指针的方法,静态链表使用的cur来表示当前节点的下一个节点的下标。#pragma once#define MAXS

2015-07-22 12:21:20 5477

原创 C++ 模版类的单向链式线性表

先上代码!以后再仔细编辑!头文件#pragma oncetemplateclass ChainList{public: struct Node { EleType _data; Node* _next; Node(){ _next = nullptr; } Node(EleType data){ _data = data; _next = nullptr;

2015-07-22 11:04:47 1348

转载 C++中的inline函数

背景在C&C++中一、inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。表达式形式的宏定义一例:#define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))取代这种形式的原因如下:1. C中使用define这种形式宏定义的原因是因为,C语

2015-07-11 20:30:19 622

原创 Lua笔记

Lua中的数据类型:         Boolean         Number         String         Function Print(type(“Hello world”))  àstringPrint(type(10*4.2))  ànumberPrint(type(print))  àfunctionPrint(type(type)

2015-06-30 11:52:31 726

转载 Cocos2d-x引擎解析

英文官网地址:http://cocos2d-x.org/programmersguide/,可见里面关于第十章Lua和第十一章Services都是没有写的.中文官网解析已经出了的章节:【开发者指南】第一章:什么是Cocos2d-x :http://cn.cocos2d-x.org/tutorial/show?id=1925【开发者指南】第二章:Cocos2d

2015-06-22 11:44:08 680

原创 C++11变长模板解析(深入理解C++11)

参考自:深入理解C++11变长模版:      变长函数和变长的模版参数       变长函数:       double sum(int n, ...)//求n个double数据之和{    double sum = 0;    va_list args;//接受输入数据的数据结构,需声明stdarg.h,    va_start(args

2015-06-16 11:24:13 7467

原创 Cocos2d-x3.5 设计Fly_bird(飞行的小鸟)并打包成APK文件

这个小的游戏代码可以使我们理解常见的cocos的概念,从场景,精灵,图层,到导演,回调函数,更新函数,再到设置物理世界,设置精灵刚体。不得不说cocos博大精深,不过有个大家一直在意的问题,就是cocos版本更新太快,有些东西不能使用或者使用错误。个人建议去看cocos官网的版本更新信息和去官网论坛提问或者加群讨论,这样更利于大家提高! 上代码!代码大部分都有注释,如有问题可以提问!游戏由三个

2015-06-13 23:06:57 1533

原创 cocos2D-x 3.5 引擎解析之--节点(Node)

#ifndef __CCNODE_H__#define __CCNODE_H__ #include "base/ccMacros.h"#include "base/CCVector.h"#include "base/CCProtocols.h"#include "base/CCScriptSupport.h"#include "math/CC

2015-06-07 22:38:46 1380

原创 cocos2D-x 3.5 引擎解析之--引用计数(Ref),自动释放池(PoolManager),自动释放池管理器( AutoreleasePool)

#include Ref is used for reference count manangement. If a classinherits from Ref.Class Ref 为引用计数类,用来管理对象的引用计数。这样就不会出现还有指针保持指向该对象,当使用该指针操作时,如果指向的对象被销毁就会出现程序异常。class CC_DLL Ref{public: 

2015-06-06 16:43:16 961

原创 cocos2d-x“无法打开源文件”

这一周开始学习cocos2d-x,刚开始就碰到了一些问题,新建完工程后,自己给工程添加新的文件,有两种方式:第一种是使用VS的类向导,让软件帮我们把需要添加的类加入到工程,可以一次把头文件和cpp文件都添加进去,然后我们在HelloWorldScene.cpp的开头使用#include""时,会报出错误提醒“无法打开源文件 **.h”,也就是无法打开我们刚才为工程添加的文件,这是为什么

2015-05-21 23:02:33 4630 3

原创 设计模式C++实现二十三:访问者模式

访问者模式(Visitor):表示一个作用于某个对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定的系统。它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相当自由地演化。访问者模式的目的是要把处理从数据结构分离出来。很多系统可以按照算法和数据结构分开,如果这样的系统有比较稳定的数据结构,又有易于变化的算法

2015-05-18 12:29:43 803

原创 设计模式C++实现二十二:享元模式

享元模式(flyweight):运用共享技术有效地支持大量细粒度的对象。享元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量细粒度的类实例来表示数据。如果能发现这些实例除了几个参数外基本上都是相同的,有时就能够受大幅度地减少需要实例化的类的数量。如果能把那些参数移到类实例的外面,在方法调用时将它们传过来,就可以通过共享大幅度地减少单个实例的数目。使用场景:如果一个应用程序使

2015-05-18 12:21:24 732

原创 设计模式C++实现二十一:中介者模式

中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者是各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。中介者模式很容易在系统中应用,也很容易在系统中误用。当系统出现多对多交互复杂的对象群是,不要急于使用中介者模式,而要先反思你的系统在设计上是不是合理。优点:Mediator的出现减少了各个colleague的耦合,使得可以独立地改变和

2015-05-18 12:10:08 1040

原创 设计模式C++实现二十:职责链模式

职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接受之间的耦合关系。将这个对象连城一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。职责链模式处理中,当客户有一个请求时,请求沿着链传递直到有一个对象处理它,我们在设计的时候也必须保证每一个请求都能被处理。接受者和发送者都没有对方的明确信息,而且链中的每个对象自己也不知道自己

2015-05-18 11:24:36 796

原创 设计模式C++实现十九:命令模式

命令模式(Command):将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。命令模式的优点:第一、能较容易的设计一个命令队列。第二、在需要的情况下,可用较容易地将命令计入日志。第三、允许接受请求的一方决定是否需要否决请求。第四、可用容易地实现对请求的撤销和重做。第五、由于加进新的具体命令类不影响其他的类,因

2015-05-18 11:15:44 743

原创 设计模式C++实现十八:桥接模式

聚合(aggregation)表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不一定是A对象的一部分。例如大雁是群居动物,所以每只大雁都是属于一个雁群,一个雁群可以有多只大雁,所以大雁和雁群是聚合关系。合成(composition)则是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期是相同的。大雁和翅膀就是整体和部分的关系,并且他们的生命周期是相同的,所

2015-05-18 10:45:05 668

原创 设计模式C++实现十七:单例模式

学习单例模式的之前,我们必须要了解static的相关用法。我通过查阅相关资料和博客,有下面一个总结文章。http://blog.csdn.net/shiwazone/article/details/45815615。单例模式(Singleton):保证一个类仅有一个实例,并且提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办

2015-05-18 10:07:11 814

原创 C++关键字static解析总结

http://developer.51cto.com/art/201104/254141.htm(下文引用地址)要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long总是默认为int一样;我们通常声明一个变量:int a;

2015-05-18 10:04:03 948

原创 设计模式C++实现十六:迭代器模式

迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。使用场景:当我们需要访问一个聚集对象时,而且不管这些对象是什么都需要遍历的时候,我们可以考虑使用迭代器模式。如果我们需要对聚集有多种方式遍历时,也可以考虑使用迭代器模式。迭代器一般需要提供开始,下一个,是否结束,当前项的内容等方法。#ifndef ITERATOR_H#define

2015-05-14 13:08:17 804

原创 设计模式C++实现十五:组合模式

组合模式(Composite):将对象组合成树的结构以表示部分-整体的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。树可能有无数的分支,只有反复使用Composite就可以实现树状结构了。在Component中声明所有用来管理子对象的方法,其中包括Add,Remove方法,这样实现Component接口的所有子类都具备Add,Remove方法。这样做的好处就是叶结点和枝节点相

2015-05-14 09:41:18 1126

原创 设计模式C++实现十四:备忘录模式

备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到之前保存的状态。备忘录模式比较适用于功能较复杂的,但需要维护和记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分。如果某个系统中使用命令模式时,需要实现命令的撤销功能,那么备忘录模式可以存储可撤销操作的状态。#ifndef MEMENTO_H#d

2015-05-13 11:29:16 770

原创 设计模式C++实现十三:适配器模式

适配器模式(Adapter):将一个类的接口转换成客户希望的另一个接口。使得原本接口不兼容而不能在一个工作的那些类可以一起工作。使用场景:当系统的数据和行为都正确,但接口不同时,我们可以考虑使用适配器模式来匹配接口。主要应用在希望复用一些存在的类,但是接口又和复用环境要去不同时使用。#ifndef ADAPTER_H#define ADAPTTE_H#include#include

2015-05-13 10:45:11 678

原创 设计模式C++实现十二:状态模式

状态模式(state):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式国语复杂时的情况。把状态的判断逻辑转移到不同状态的一系列类中,可以把复杂的判断逻辑简化。

2015-05-13 09:41:01 686

原创 设计模式C++实现十一:抽象工厂模式

抽象工厂模式(Abstract Factory):提供一个创建一系列相关或者相互依赖对象的接口,而无需指定他们具体的类。优点:便于交换产品系统,由于具体工厂类,在一个应用中只需要初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,只需要改变具体工厂即可以使用不同的产品配置。它让具体的创建实例过程与客户端分离,客户端是通过他们的抽象接口操作实例,产品的具体类名也被具体工厂实现分离,

2015-05-12 22:22:00 1030

原创 设计模式C++实现十:观察者模式

观察者模式(Observer):定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时会通知所有观察者对象,使他们能够自动更新自己。将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致性,我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展、重用都带来不便。所以,当一个对象的改变同时需要改变其他对象而且不知道要

2015-05-12 10:05:29 843

原创 设计模式C++实现九:建造者模式

建造者模式(Builder):主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。其好处就是使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时使用的模式。#ifndef BUI

2015-05-12 08:21:36 741

原创 设计模式C++实现八:外观模式

外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,时刻这一子系统更加容易使用。使用场景:首先,在设计初期阶段,应该要有意识的将不同的两个层分离。比如经典的三层结构,就需要考虑在数据访问层和业务逻辑层、业务逻辑层和表示层的层与层之间建立外观的Facade。其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,大多数的模式使用时也都会产生很多很小

2015-05-11 21:50:24 569

原创 设计模式C++实现七:模版方法模式

模版方法模式(TemplateMethod):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。模版方法是通过把不变的行为搬移到父类,去除子类中重复的代码。模版方法模式是一个典型的代码复用的例子。应用场景:当在一些子类中会出现一些相同的代码,或者一些相同的功能不同的细节时,可以把相同的代码定义到父类中,而把相同的

2015-05-11 21:15:17 559

原创 设计模式C++实现六: 原型模式

原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另一个可定制的对象,而且不需知道创建的具体细节。#ifndef PROTOTYPE_H#define PROTOTYPE_H#include#includeusing namespace std;class Resume{ string nam

2015-05-11 19:26:53 592

原创 设计模式C++实现五:工厂方法模式

工厂方法模式(Factory Method):定义一个用于封建对象的接口,让子类觉得史丽华哪一个类,工厂方法使一个类的实例化延迟到其子类。简单工厂模式优点 :工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。但是因为我们需要根据客户端的输入来修实例化类,如果我们要增加类的话,我们需要修改工厂类方法,把该类加入其中,这意味着我们不但对扩

2015-05-11 12:09:33 752

原创 设计模式C++实现四:代理模式

代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。应用场景:1.远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样就可以隐藏一个对象存在于不同地址空间的事实。    2.虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。例如一个很大的HTML网页的打开,我们看到图片是一张一张下载后才能看到,而未打开的图片框,就是通过虚拟代理来替

2015-05-10 22:45:23 627

原创 设计模式C++实现三:装饰模式

装饰模式(decorator ):动态的给一个对象添加一些额外的职责,就增加的功能来说,装饰模式比生成子类更为灵活。使用情况:当系统需要新功能的时候,是想旧的类中添加新的代码,这些新的代码通常装饰了原有类的核心职责或者主要行为,它们在主类中加入了新的字段,新的方法新的逻辑,从而增加了主类的复杂度。而这些新加入的东西仅仅是为了满足一些只有在特定情况下才会执行的特殊行为的需要。装饰模式可以把每个要

2015-05-10 17:34:12 612

转载 设计模式的六大原则

转自:http://www.uml.org.cn/sjms/201211023.asp#4设计模式六大原则(1):单一职责原则定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职

2015-05-09 18:22:38 602

原创 设计模式C++实现二:策略模式

策略模式(strategy): 定义算法家族,分别封装起来,让这些算法直接可以相互替换,我们可以自由添加或者修改算法而不会影响客户.优点:简化了单元测试,因为每个算法都有自己的类,可以通过自己的接口单独测试。如果我们在客户端为了判断使用哪个算法而使用switch语句来分析,我们可以使用策略模式把这个判断的过程隐藏到后台,把每个算法用一个strategy类实现。这样就简化了客户端的代码,也隐

2015-05-09 16:41:59 782

原创 设计模式C++实现一:简单工厂模式

参考大话设计模式和网上的一些资料,自己编写下一些简单的设计模式,让自己了解这些设计模式的妙处!

2015-05-09 15:08:56 877

Boost程序库完全开发指南

boost库是一个优秀的C++库,值得一学

2017-06-02

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

TA关注的人

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