自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

c++菜鸟一只。

天行健,君子以自强不息;地势坤,君子以厚德载物。

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

转载 关于C++中的虚拟继承的一些总结

原文转自关于C++中虚拟继承的一些总结1.为什么要引入虚拟继承虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下:class Aclass B1:public v

2015-05-28 15:43:23 585

原创 Cocos2d-X小游戏——别踩白块

自己学了快两个月的cocos2d-x了,前几天自己看着教学视频,跟着做了一个小游戏——别踩白块。今天来说一说我自己是如何写这个项目的。逻辑有点乱,不知道看不看得懂。。。。首先,这个游戏有两个场景,一个是开始场景,一个是失败场景。开始场景如下:开始场景里面有三类块:起始块(黄色,有Start Game)正常块(黑白块)结束块(绿色,有You Win)起始块如下: 正常块如下: 结束块如下:

2015-05-27 16:25:17 4165 2

原创 数据结构——归并排序算法

昨天说了快速排序,今天来讲一讲归并排序:什么是归并?归并:将两个或两个以上的有序表组合成一个新有序表。归并操作的步骤:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列设定两个指针,最初位置分别为两个已经排序序列的起始位置比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置重复步骤3直到某一指针超出序列尾将另一序列剩下的所有元素直接复制到合并序列

2015-05-26 14:33:05 12750 7

原创 数据结构——快速排序算法

今天来说一说快速排序:基本思想:任取一个元素 (如第一个) 为轴点所有比它小的元素一律前放,比它大的元素一律后放,形成左右两个子表对各子表重新选择中心元素并依此规则调整,直到每个子表的元素只剩一个注意:每一趟的子表的形成是采用从两头向中间交替式逼近法由于每趟中对各子表的操作都相似,可采用递归算法代码实现:#include <iostream>using namespace std;/

2015-05-25 20:14:44 3467

原创 数据结构——二叉树的操作

这里我们主要讲二叉排序树的操作:什么是二叉排序树?或者是一棵空树或者是具有一下性质的二叉树: a.若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值; b.若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; c.它的左、右子树也分别为二叉排序树Tip : 中序(左根右)遍历二叉排序树会得到一个关键字的递增有序序列二叉排序树的操作——查找查找步骤:若查找的关键字等于

2015-05-24 11:43:45 1230

转载 cocos2d-x学习笔记——各种遍历与范围for语句的使用

原文转自各种遍历与范围for语句的使用遍历这东西,我的理解就是for语句的加强版啦。本来这种小技巧类型的博文应该放到Cocos2dx 小技巧这一栏里,但因为涉及到3.0的一些知识与C++ 11的新特性,所以就大胆的放这了。下面介绍一些常用的遍历。1、CCArray的遍历看到这里,有些人又按耐不住的要举起西瓜刀了:你不是说3.0beta后已经没有CCArray这货了吗?现在又拿出来作甚? 其实我也很

2015-05-21 21:14:09 1122

原创 数据结构——图

昨天晚上写了树的一些基本概念和树的操作以及树的一些应用。 今天来说一说图!基本术语:图—— 一个图(G)定义为一个偶对 (V,E) ,记为 G=(V,E) 。其中: V是顶点(Vertex) 的非空有限集合,记为V(G); E是无序集V&V的一个子集,记为E(G) ,其元素是图的边(Arc)。无向图——每条边都没有方向有向图——每条边都有方向完全图——任意两点都有一条边相连稀疏图——有

2015-05-20 10:25:10 1432

原创 数据结构——树

这几天自己又重新看了一遍《数据结构》。 不看不知道,一看吓一跳。以前学的知识有忘记得差不多了。所以,决定以写博客的方式, 将我学到的东西记录下来,就算后面又忘记了也能回来看看。废话不多说,我花了几天将老师上课的课件和书本结合起来看,对数据结构的体系有了自己的一个理解今天就先说一说树和二叉树。基本术语:树——是由一个或多个结点组成的有限集合,其中: ⒈必有一个特定的称为根(ROOT)的结点;

2015-05-19 21:50:04 798

转载 cocos2d-x学习笔记——内存管理

Cocos2d-x中所有继承自Ref的类,都可以使用Cocos2d-x的内存管理。 Cocos2d-x 提供引用计数管理内存。调用retain()方法,令其引用计数增1,表示获取该对象的引用权;在引用结束的时候调用release()方法,令其引用计数值减1,表示释放该对象的引用权。通过调用autorelease()方法,将对象放入自动释放池。当释放池自身被释放的时候,它就会对池中的所有对象执行一次r

2015-05-12 13:42:35 489

原创 cocos2d-x学习笔记——EventDispatcher事件分发机制

EventDispatcher 事件分发机制先创建事件,注册到事件管理中心 _eventDispatcher,通过发布事件得到响应进行回调,完成事件流。_eventDispatcher是Node的属性,通过它管理当前节点(场景、层、精灵等)的所有事件的分发。但它本身是一个单例模式值的引用,在Node的构造函数中,通过Director::getInstance()->getEventDispatche

2015-05-11 19:15:23 2715

转载 Visual Assist X(小番茄)快捷键

Alt + Shift + F:光标放到某个字符串上,按下此键,会找出所有引用了这个字符串的地方。Alt + Shift + S:方便你寻找某个对象或变量等等。Alt + O: 在.h与.cpp之间切换 Ctrl+Shift+V: Parse 弹出最近10个copy的内容菜单Alt + Shift + R:当想改掉一个类名或是其他东西的命名时,可能已经有很多地方引用这个名称了,这时按下此快

2015-05-08 15:00:22 6551

转载 如何使用指向类的成员函数的指针(详解!)

本文转自lishuhuakai的博客 我们首先复习一下”指向函数的指针”如何使用?  void print()  {  }  void (*pfun)(); //声明一个指向函数的指针,函数的参数是 void,函数的返回值是 void  pfun = print; //赋值一个指向函数的指针  (*pfun)(); //使用一个指向函数的指针比较简单,不是吗? 为什么 *pfu

2015-05-07 20:36:45 1119

原创 双向链表的插入及删除图解

双向链表的插入第一步:首先找到插入位置,节点 s 将插入到节点 p 之前 第二步:将节点 s 的前驱指向节点 p 的前驱,即 s->prior = p->prior; 第三步:将节点 p 的前驱的后继指向节点 s 即 p->prior->next = s; 第四步:将节点 s 的后继指向节点 p 即 s->next = p; 第五步:将节点 p 的前驱指向节点 s 即 p->prior =

2015-05-06 20:25:54 30387 12

原创 单向循环链表的合并图解

第一步:创建一个临时节点指针,指向链表 L2 的第一个数据节点即:ListNode * p = B->next->next; 第二步:将链表 L2 的最后一个节点 B 指向链表 L1 的 头节点即链表 L1 的最后一个节点 A 指向的节点:B->next = A->next; 第三步:将链表 L1 的最后一个节点 A 指向链表 L2 的第一个数据节点即 A->next = p;刚开始,怎么也搞不

2015-05-06 20:11:15 6156 5

原创 ICMP的应用之路由追踪程序(Tracert)

实现原理:Tracert 程序关键是对 IP 头部生存时间(time to live)TTL 字段的使用,程序实现是向目的主机发送一个 ICMP 回显请求报文,初始时 TTL 等于 1 ,这样当该数据报抵达途中的第一个路由器时,TTL 的值就被减为 0,导致发送超时错误,因此该路由生成一份 ICMP 超时差错报文返回给源主机。随后,主机将数据报的 TTL 值递增 1 ,以便 IP 报能传送到下一个路

2015-05-04 22:51:53 9595 7

原创 基于TCP与UDP的简单聊天程序

基于TCP的网络应用程序的编写1.服务器端程序#include <Winsock2.h>#include <stdio.h>#pragma comment(lib,"Ws2_32.lib")void main(){ //加载套接字库 WORD wVersionRequested; //加载的Winsock库的版本 WSADATA wsaData; //库版本的有关

2015-05-04 19:48:38 4068

原创 虚拟内存之页面置换算法

四种页面置换算法:最佳(OPT,Optional)最近最少使用(LRU,Least Recently Used)先进先出(FIFO,First In First Out)时钟(Clock)一、最佳置换算法OPT 策略选择置换下次访问距当前时间最长的那些页,可以看出该算法能导致最少的缺页中断,但是由于它要求操作系统必须知道将来的事件,显然这是不可能实现的。但它仍然能作为一种标准来衡量其他算法

2015-05-03 22:17:08 6570 1

原创 内存管理

本章主要学习目标:讨论内存管理的主要需求理解内存分区的原因并解释所使用的各种技术理解并解释分页的概念理解并解释分段的概念分区和分段的区别一、内存管理的需求重定位(把内存换出后再换入,放入内存的其他区域)保护(运行时,保护进程的程序和数据不被未授权的访问和修改 [ 用硬件保护 ] )共享(多个进程访问共享内存区域)逻辑组织(模块化编程 -> 段式内存管理)物理组织(两级存储:内存

2015-05-03 21:17:39 586

转载 C++中 虚函数中的默认参数问题

原文转自nwplei的博客 当通过指针调用一个对象的方法时,如果该方法是虚函数,则实际调用的是该实例的方法。当缺省参数和虚函数一起出现的时候到底用哪个默认值呢?虚函数是动态绑定的,但是为了执行效率,缺省参数是静态绑定的。 也就是 指针是哪种类型,就调用该类型对应的类中,该函数定义时的缺省值。#include <iostream>using namespace std;class A{pu

2015-05-03 17:03:07 687

原创 并发性:互斥和同步、死锁和饥饿

一、与并发相关的关键术语:原子操作:要保证指令的序列作为一个组来操作执行,要么都不执行;要么执行要直接执行到指令完毕,中间不能中断临界区:是一段代码,在这段代码中进程将访问共享资源,当有一个进程在这段代码中运行时,其他进程不能在这段代码中运行死锁:两个或两个以上的进程因其中的每个进程都在等待其他进程做完某些事情而不能继续执行,这种情形称为死锁互斥:当一个进程在临界区访问共享资源时,其他进程不

2015-05-03 15:55:47 3529

原创 进程与线程

一、引入进程的原因为了使程序能并发执行,并能对并发的程序加以描述和控制(解决程序并发的不可再现性)二、什么是进程?进程是执行中的程序进程是动态概念,有声明周期它是操作系统进行资源分配和调度的基本单位进程分类:系统进程:执行操作系统核心代码的进程(独占资源,最高优先级运行;直接执行 I/O 操作;内核态下活动)用户进程:执行用户程序的进程(通过系统调用竞争资源;不直接执行 I/O 操作;用

2015-05-03 14:14:31 430

空空如也

空空如也

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

TA关注的人

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