自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

坚持理想 面对现实

一步一个脚印的向自己的目标迈进

  • 博客(87)
  • 资源 (11)
  • 收藏
  • 关注

原创 我的工作笔记

1:C#中删除list中指定value>在某一次面试的时候被问到这个问题。使用foreach或者for遍历一个List的时候,在过程中删除了List中的一个元素则会改变List内部的顺序,导致后面的遍历不正确。解决这个问题,比较中庸的方法是单独起一个List,把要删除的元素先保存起来,然后再去遍历这个新的List,针对每一个元素去调用源List的删除方法。还有一个比较取巧的方法对List采用从

2017-04-10 14:09:41 1468 2

原创 C++Primer学习笔记《5》

类型转换在C++的很多代码中存在,更多的是在你看不到的背后执行的隐式类型转换。算术类型之间的转换是为了防止精度的丢失。如果左右操作数不一致且具备转换的条件,右操作数会被转换为左操作数类型。 类型转换发生在哪些地方:在混合表达式中表示范围较小的类型转换为表示范围较大的类型;当算术类型作为条件表达式中,算术类型为被转换为bool类型。 整形提升:整型里面比int小的(char,sign

2014-08-23 18:00:37 1688

原创 C++primer学习笔记《4》

每一个表达式都有一个结果,字面值常量也是表达式,其结果就是值本身。除了特殊用法外表达式的结果是右值。是左值的情况也有,比如++i;这个表达式就是一个左值;还有逗号运算符的结果是表达式最右侧操作符德值,如果最右是一个左值的话,那整个逗号表达式就是左值。 表达式涉及到操作符和操作数,操作符有优先级规则,有结合性,还有操作数的求值顺序。就操作数的求值顺序而言,比如f1() * f2();两个函数

2014-08-23 17:20:42 1482

原创 《超级玛丽》3

第三阶段:目标:实现水平方向和竖直方向上的碰撞,更具有真实感。1:要想解决水平方向的碰撞,就要先明确一个问题,地图上的哪些东西是不可以穿过的,也就是说要先定义好地图上的某些可供碰撞检测的物体砖块类型。如图:水平检测函数的开头准备工作:为了简化水平方向的检测,由于马里奥的锚点是中心位置,所以左右两边的检测都是采用左边和右边的中点位置来代替的

2014-07-17 21:23:36 3568

原创 《超级玛丽》2

第二阶段:目标:让马里奥接受左右移动控制和跳跃控制,以及在这个过程中执行左右行走动画和维持腾空状态,还有马里奥状态机的设计。这个过程中也没有碰撞检测。1:这是一个横版卷轴控制动作类游戏,虽说用鼠标点击模拟的移动设备上的触摸机制,但还是不方便测试,比如同时按下两个按键时,单用鼠标触摸就做不到了。所以为了实现开发初期的测试便利,需要把引擎稍加改造一下,让游戏接受来自键盘的消

2014-07-17 21:17:57 3898 1

原创 《超级玛丽》1

写在游戏开发文档之前(这个游戏是在13年暑假做的,历时40天,学习引擎用了半个月,第一个游戏有许多槽点,各位看官轻喷。这个文档也是当时写的,我也懒得再修补直接给贴上来了):我在写超级玛丽的时候没有考虑到屏幕适配的问题,当我在最后把代码编译到安卓平台上的时候才发现屏幕适配应该在最开始定下来,所以后来把代码做了移植。这个游戏原定的分辨率就是480*320,所有的资源都是以这个分辨率设计

2014-07-17 21:03:35 6616 14

原创 C++Primer学习笔记《三》

数组名其实就是一个常指针,指向数组元素中第一个的地址,在程序中如果要用指针遍历数组,不能直接用数组名来自增或自减,因为它是常量,一般先把数组名保存一份同类型的指针,然后再用这个指针来自增或是自减来实现遍历。 指针也是可以进行算术加法和减法的,但必须保证原地址和结果地址都是想同一个数组的元素或是指向数组的末端元素的下一个单元(类似end())。指针的减法操作是有意义的,它表示

2014-06-21 23:59:32 1331

原创 堆排序

堆排序// 测试堆排序 // @start:调整的起点 // @end:调整的终点,在堆排序的过程中,不断地减小调整区间,end参数起作用 void SiftDown(int arr[], int start, int end) { int i = start; int j = 2*i + 1; // j记录的是i结点的左孩子 int temp = arr[i];

2014-06-05 19:51:11 1239

原创 归并排序

// 归并排序 void Merge1(int arr[], int p, int mid, int r) { int n1 = mid - p + 1; int n2 = r - mid; int *pLeft = new int[n1](); int *pRight = new int[n2](); for (int i = 0; i < n1; ++i) {

2014-06-05 18:44:52 1199

原创 快速排序

常规快速排序快速排序的优化

2014-06-05 02:18:56 3464

原创 插入排序(直接插入,折半插入,希尔)

插入排序直接插入排序// 直接插入排序void DirectInsertSort(int arr[], int lhs, int rhs){ int temp; for (int i = lhs+1; i <= rhs; ++i) { temp = arr[i]; int j = i - 1; @1 while (j >= 0 && temp < arr[j]

2014-06-04 20:26:09 1614

原创 C++Primer学习笔记《2》

数组是一种复合类型,由类型名+数组名+维度组成。数组定义中的类型可以是C++基本内置类型,也可以是类类型的。数组元素的类型可以是除了引用类型以外的其他任何类型,没有所有的元素都是引用的数组。 数组的维度必须是大于或等于1的编译器常量,所谓的编译器常量就是指在编译期间就可算出结果的表达式,字面值常量,枚举类型,用常量表达式初始化的const对象。任何在编译器无法计算出的值都不可作为数

2014-06-04 01:07:49 1537

原创 C++Primer学习笔记《1》

Void也是一种类型,常用于返回值为void的函数return处。C++只是规定了各种基本内置类型的最小存储空间,并没有限制其上限值,对于int,大部分的编译器实现采用的空间都会比要求的大,一般为32bits。但其规定最小空间大小是16bits。 在C++中,并没有关于bool类型的最小存储空间限制,bool变量在C++也许是不占用内存空间的,语言层面的实现就是宏定义,定义

2014-06-02 23:30:15 2083

原创 我的cocos2dx学习历程

我的cocos2dx学习历程,系列博客之开篇

2014-01-05 01:24:54 21121 11

原创 基于循环链表的约瑟夫问题

#pragma once#includeusing namespace std;templateclass LinkNode //一个结构体对外全部可见{public: T data; //模板类型的一个数据 LinkNode* link; //该struct的一个指针,用于指向下一个结点public: LinkNode(LinkNode* ptr = NULL)//只初始化指

2013-05-30 19:43:39 1906

原创 二叉树实现详解

二叉树按照数据结构类型来划分属于树结构,在树结构中他又是比较简单而且具有理论研究的意义的一种数据结构。有很多树形结构都是基于二叉树的变种,所以对二叉树的学习与了解是很有必要的。根据笔者的经验,在学习数据结构的过程中要深刻的体会逻辑接口与物理存储实现的区别与联系。比如在之前的博客中有讲到栈和队列的实现,栈和队列都有基于数组存储方式的实现和基于链表存储形式的实现。所谓的逻辑接口就是这个数据结构具备哪些

2013-05-01 18:48:04 14447 2

原创 C++如何拒绝对象的copy

中的一个条款,如果是想要阻止一个对象的复制或是copy assignment操作应该怎么做呢?class HomeForSale {};HomeForSale h1;HomeForSale h2;HomeForSale h3(h1);      //企图调用h3的copy构造函数克隆出一份h1h1 = h2;                           //企图调用co

2013-04-29 13:58:36 3287

原创 ADO连接SQL SERVER 2008数据库代码

ADO在这里就不细述了,直接讲解访问的过程。#pragma once#include#include #include #include //为了COleDateTime类引入using namespace std;//这是引入ADO动态链接库,默认的路径如下,如果不在默认地方,在这里需要另外指明位置#import "c:\program files\common fil

2013-04-18 20:55:10 9852 1

原创 野指针,悬垂指针,垃圾内存,内存“黑洞”

野指针首先他不是NULL指针,其次他指向的内存是不合法的,这个不合法的内存俗称“垃圾”内存。它产生的原因一个是在free或是delete后,没有及时将指针设置为NULL。野指针的检测也是很困难的,比如用if(0 == ptr)也是不行的,因为在free或是delete后ptr并没有被设置为NULL。关于为什么是(0 == ptr)而不是(ptr == 0),这一点建议去看Effective C++

2013-04-12 20:31:08 3807 3

原创 使用纯C++STL重写读取CSV表格

之前写的读取CSV表格代码是经过封装的C与C++混合代码,最近不断的有机会接触C++的容器与算法库,所以就不断的学习,不断的进步,发现了用STL搜索文本的方法就去改写之前写的代码。第一步先打开文件ifstream in("skill.csv");  判断打开是否成功的函数有in.is_open(),in.fail(),in.bad(),in.good()等。第二步将文件中的内容以行

2013-04-11 22:57:11 3796

原创 C++中的unique(),unique_copy(),sort()用法

在C++中如何使用STL和Algorithm库中的函数一起来获取一个字符串包含的字符集呢?这是今天遇到的问题。要用到的容器或函数有:string,sort(),unique(),unique_copy()。string:C++中char *的代替者,使用它处理字符串的时候再也不用考虑内存访问异常或是下标越界问题了,我是自从使用了string后很少出现上述的问题了。关于string的用法网上

2013-04-10 20:29:14 27315 2

原创 C++读取CSV表格

看到这个题目可能会有人问什么是CSV表格呢,在我做这个实现之前我也是没有听说过CSV表格,更不知道他有什么用了。CSV是一种Excel表格的导出格式,在Excel表格的菜单栏中点击文件->另存为会弹出一个文件夹浏览窗口,在下拉框中可以选择保存格式,其中有一个就是.CSV(逗号分隔符)选项。CSV表格的规则:1 开头是不留空,以行为单位。2 可含或不含列名,含列名则居文件第一行。3

2013-04-06 16:34:20 32694 11

原创 C/C++中的序点

int i = 3;    i = i++;    cout     结果是什么?有人可能会说是3,也有人可能会说是4,更多的人在骂出题的人白痴,但这语句究竟有何问题呢?未必每个人都清楚。    有些人也许马上会说,这是“未定义行为”。没错,这是一个典型的未定义行为。i = i++这个表达式合乎C++语法,能够顺利编译通过,但是执行的结果,标准说“未定义”。为什么是

2013-04-06 15:41:34 1869

原创 void main()误区

很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) .C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* …… */ } is not and never has been C++, nor has it e

2013-04-03 15:13:18 7335 3

原创 C++封装SQLite实例<六>

之前的连续五篇大致介绍了各种SQLite的原生函数原型,参数以及用途等,并对各个封装的类做了详细的介绍,最后一篇将展示一下怎么使用封装,使用封装的时候需要注意的问题等。假设已经存在一个数据库名为FirSQLite.db;下面使用各种类来对其做各种常规访问与操作。最开始要定义一个CppSQLite3DB类对象 db;然后调用函数Open(const  char *)打开一个已经存在的数据库,

2013-03-30 23:20:45 4171

原创 C++封装SQLite实例<五>

之前的博客都在讲如何将一个普通的SQLite查询/执行流程中所涉及到的变量与函数封装到几个类中去。封装所遵循的原则是,尽量的不要有太多的耦合,因为SQLite的变量或是结构都是指针类型的,如果不同的类对象公用同一个指针,那么势必会在后面出现内存访问问题。所以CppSQLite3Table中字段是独有的一个一维指针数组,两个整型字段分别表示这个表中的行值和列值。CppSQLite3Query中的大部

2013-03-30 00:38:18 6543

原创 C++封装SQLite实例<四>

之前介绍的是如何获取一张表和一个查询结果,这一篇主要是将SQLite的查询语句封装成一个类,便于使用与查询。一个SQLite语句有执行DML(数据控制语言)类操作的,还有主要就是执行查询类的语句了。需要指定sqlite3*对象,还需要sqlite3_stmt*对象。这两个就是这个CppSQLite3Statement类的成员变量。class CppSQLite3Statement{pr

2013-03-28 21:39:29 3542 1

原创 C++封装SQLite实例<三>

前一篇博客中介绍的是如何根据sqlite3_get_table()函数来获取一张表的内容,就是一股脑的把表中的内容全部存储起来放在一个一维数组中,这当中的规则已经介绍过了。接下来讲的是如何根据一个SQL查询语句来挑选出合乎选择条件的记录,被挑选出的记录事先是不知道的。你不知道这个查询的结果中有几行更不知道每一行中具体的记录值是什么,所以没办法用给定行值和列值的方式来获取数据,所有之前的用数组存储表

2013-03-26 18:32:58 7636

原创 C++封装SQLite实例<二>

这一篇博客主要讲如何使用SQLite有关库函数去管理数据库中的一张表。主要用到的函数:SQLITE_API int sqlite3_get_table( sqlite3 *db, /* The database on which the SQL executes */ const char *zSql, /* The SQL t

2013-03-24 13:38:15 4942 2

原创 基于单链表的多项式问题

上学期的东西了,不想再去细究思路了,直接贴代码,注释很详细#pragma once#includeusing namespace std;class LinkNode{public: float coef;//系数 int expn;//指数 LinkNode *link;//指向后继的指针域 LinkNode *plink;//指向前驱的指针域public: LinkN

2013-03-23 23:20:53 2631

原创 C++封装SQLite实例<一>

第一次结识SQLite是在上学期,有一个软工的同学在看有关安卓应用的书籍,正好在实验室碰到了他,他正在看的就是SQLite这个数据库在安卓上的使用。从那以后就再也没有了解过有关SQLite的信息,上星期学长们的CDIO组在做一个游戏,要用到这个数据库,正好我也在这个组里,于是就分配我去学习如何封装这个数据库中的原生态函数,以便于访问数据库。学了一个星期,根据外文网站上的一个例子逐步的去拆解过程函数

2013-03-22 23:49:33 4806 1

原创 字符串匹配算法之KMP算法

这个算法是字符串匹配算法中的佼佼者,仅利用O(lengthText + lengthPattern)的时间就完成了匹配任务。他快速的原因是无须回溯。这个算法最高深的也是最难懂的地方在于,两个串进行匹配,成功与否竟然只和模板串有关系,和目标串是没有关系的。当模板串在j位置匹配失败后,不用重新到0位置,下一次的位置应该再next[j]的位置。下面是生成next数组的函数:void GetNex

2013-03-14 00:02:49 2209

原创 字符串匹配朴素算法

这个朴素算法的英文命名为BruteForce,暴力的意思,所谓的朴素算法就是算法分析上常讲的暴力求解方法。这是一种方法,也是一种算法思想,就是不考虑空间时间复杂度,以最简单的看待问题的视角去思考,去解决。比如八皇后问题,使用8重循环来依依判断,比如全排列,使用多重循环枚举的方式等等。字符串匹配问题的朴素算法是字符串算法中最基本也可以算是最简单的算法了。他就是按照大多数人们的思维去思考这么一个匹

2013-03-10 09:55:26 9421

原创 最长公共子序列问题

最长公共子序列问题很早就在很多论坛上见过,前几天看到一个人发了一篇帖子,心血来潮就去看算法导论上的动态规划部分,关于这个问题不再细述,直接贴C++实现的具体代码了。//做大公共子序列问题#pragma once#include using std::string;#define OVER 1 //书中使用箭头符号表示的,这里用宏代替#define LEFT 2#define

2013-03-05 15:30:06 1468

原创 动态规划——装配线调度问题

这个问题是在算法导论的动态规划章节有提到,由于问题叙述起来太繁杂就直接省略。命名规则与书上的伪代码是一致的,只是用C++具体语言实现了而已。//动态规划问题——装配线调度问题#pragma onceclass ASL{private: int stationNum; //装配站个数,从文件中读取 int *arr1; //装配线1 int *arr2;

2013-03-03 23:24:42 1945 2

原创 洗牌算法多种形式

洗牌算法直观的来说,是将一幅有序的扑克牌经过处理后变成乱序的。这个处理的过程就是洗牌算法了,当然这里的扑克牌也许是其他的数据等等,算法要保证乱序后的数据和之前的一模一样,只是顺序不同而已。下面就针对不同形式的洗牌算法给出代码。有54张牌,乱序存储在一个整型数组中arr[54]。一副牌就用1,,,54这54个数字代替。//从无到有随机生成一副牌序void MyShuffle_Non

2013-02-24 00:54:23 1762

原创 队列的应用—电路布线最优解问题

首先什么是电路布线问题呢?电路布线问题是类似于迷宫的问题,也是一个模拟矩阵,迷宫是每个点有8个方向可以走,但是在电路布线问题中每个点上只有上下左右4个方向可走。因为电路布线不允许对角线上布线,并且电路布线问题要求线路所走过的路程必须是最短的,即从出发点到目的点路径很可能有很多,要找的是经过跳数最少的那个。也就是说不能太多的弯儿,能直走的就直着走。迷宫问题是只要找到出路,不管路径是如何的。在寻找

2013-02-05 20:39:29 4497 1

原创 队列的应用—输出杨辉三角

#include"Queue.h"#includeusing namespace std;const int total_row = 6;void main(){ void Pascal_Triangle();//函数声明 Pascal_Triangle();}void Pascal_Triangle()//杨辉三角 输出二项式系数{ Queue qu;//队列 int e

2013-01-26 23:08:41 6789

原创 基于数组的循环队列

之前讲的是基于链式存储的队列,如果是基于数组的存储结构 的队列会是怎样的呢?起初队头和队尾均指向第一个元素,随着不断地进队列,后来队列满了。这时候从队头出队列,当出完后此时队头和队尾均指向数组的末尾了。虽然这个数组是空的,但是不能用来存储了,造成了很大的浪费。在这个时候能不能将数组前面的空位置利用起来,继续用来存储呢?这个时候就用到了循环队列的概念了,循环队列主要是为了解决基于顺序存储的队列造成的

2013-01-22 19:41:07 9070

原创 基于链式存储的队列

日常生活中我们吃饭,买票等都是要排队的,这里的排队其实就是对应着数据结构中的队列了。其中排队过程中不允许插队也是一个能反应队列结构性质的表现吧。队列和栈一样,是一个被限制存取的线性结构。普通队列规定只能在队头出,只能在队尾进,这也是为什么不允许插队的原因了。当然这里讨论的是最简单的最普通的队列了,当然还是有一些特殊的队列的,比如双端队列,优先级队列等,后续细说。基于链式存储的队列结构中,结点类

2013-01-22 18:34:35 1337

ADO连接SQL Server 2008数据库代码完整工程打开即用,有使用用例

ADO连接SQL Server 2008数据库代码完整工程打开即用,有使用用例

2013-04-18

C++读取CSV表格

C++读取CSV表格

2013-04-06

C++模拟计算器

C++模拟实现复数计算器

2013-01-21

成绩录入系统

C++实现学生成绩录入系统 STL 文件操作等

2013-01-08

简单模拟教务处的选课系统的实现

C++简单模拟教务处的学生选课系统,其中有文件操作,容器使用,有一些设计模式的影子,继承与多态

2012-12-31

简单模拟10086的客服查询业务C++实现

用C++简单模拟最基本的10086几个业务查询功能与定制业务功能,有文件操作,STL容器使用等

2012-12-31

模拟ATM的最简单工作流程的C++代码

控制台下的,有文件操作,有STL种的容器使用。 ATM的注册,对个人账户的查询与转账等实现

2012-12-31

数据结构 堆结构的完整源码与哈夫曼树的构造

数据结构 堆结构的完整源码与哈夫曼树的构造

2012-12-30

并查集以及各种操作

并查集以及各种操作,并不仅仅是并与查的功能。很多重载方法,适合不用的场合下使用

2012-12-15

图基本结构以及最小生成树算法,最短路径算法和AOV网络等

图数据结构,最小生成树,最短路径,AOV网络

2012-12-15

基本数据结构(链表,栈,队列,各种树)代码大全

基本数据结构(链表,栈,队列,各种树)代码大全

2012-11-25

空空如也

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

TA关注的人

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