C/C++
gouki04
面向兴趣编程
展开
-
new和malloc的区别
new和malloc的区别 1、new 是c++中的操作符,malloc是c 中的一个函数。 2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数。 3、内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是那个文件的那一行,而ma...原创 2009-08-28 10:59:00 · 618 阅读 · 0 评论 -
C++模板实现的通用工厂方法模式
C++模板实现的通用工厂方法模式1.工厂方法(Factory Method)模式工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。工厂方法模式结构示意图工厂原创 2011-11-30 10:11:25 · 8526 阅读 · 3 评论 -
浅谈RPG Maker XP自动地图元件的绘制原理
浅谈RPG Maker XP自动地图元件的绘制原理序:最近刚好想写个类似RMXP的地图编辑器,遇到的第一个问题就是自动地图元件的绘制问题。老实说,我不知道这东西到底叫什么(特别是英文叫什么),只知道RMXP翻译过来就是自动地图元件,而且魔兽的地图编辑器也用到这种技术,但我在网上却始终找不到相关的资料。其绘制原理其实很清晰,就是用户给出指定规格的地图元件资源,编辑器将其拆分,在绘制时再根原创 2011-12-27 20:51:18 · 10868 阅读 · 3 评论 -
魔兽争霸自动地图元件的绘制原理
魔兽争霸自动地图元件的绘制原理序:本文主要介绍一种简单高效的自动地图元件的绘制方法,基本的原理是基于CodeProject的作者为Colin Vella的一篇文章:http://www.codeproject.com/KB/game/Autotiles_Algorithm.aspx#_comments 该文章介绍的方法非常简单,而且很高效。本文会先讲述此方法,然后在此方法的基础上,介绍魔兽原创 2012-01-17 15:20:00 · 12494 阅读 · 12 评论 -
C++实现的委托机制(2)
C++实现的委托机制(2)1.实现任意参数的函数委托按上一篇文章的方法,你已经可以使用无参数的函数委托了。当然,这远远不够。要实现任意参数的函数委托,这里的任意参数包括任意个数和任意类型。任意类型这个容易解决,使用模板就行,但任意参数个数呢?注:最终的实现代码可以原创 2011-10-08 14:40:17 · 2125 阅读 · 1 评论 -
C++实现的委托机制(3)
C++实现的委托机制(3)1.引言按上一篇文章的方法,你已经可以使用任意参数的函数委托了。这里介绍下MyGUI实现的两个辅助类,CDelegate类和IDelegateUnlink。如果你不为了深入了解MyGUI的委托实现,可以跳过此处。CDelegate即为单委托,原创 2011-10-08 15:16:59 · 2437 阅读 · 2 评论 -
C++实现的委托机制(1)
C++实现的委托机制(1)1.引言下面的委托实现使用的MyGUI里面的委托实现,MyGUI是一款强大的GUI库,想理解更多的MyGUI信息,猛击这里http://mygui.info/最终的代码可以在这里下载:http://download.csdn.net/detail/gouki04/3641328 我们的目标是要实现一个跟.NET几乎完全一样的委托,使用简单,支持多播,可以添...原创 2011-10-08 14:36:06 · 4395 阅读 · 1 评论 -
VC2008下提示找不到MSVCP90D.dll的解决办法
转帖:http://hi.chinaunix.net/?617034/viewspace-27761VS 2005在生成可执行文件时使用了一种新的技术,该技术生成的可执行文件会伴随生成一个清单文件(manifest file)(.manifest后缀文件)(其本质上是转载 2011-09-20 20:11:54 · 890 阅读 · 0 评论 -
算法设计 -- VC控制台绘制“棋盘覆盖问题”的结果棋盘
呵呵~~自从上次的模拟汉诺塔后~发现用控制台来模拟或实现算法设计里的算法也是一件很有意思的事~这次是棋盘覆盖问题~由于书上只是简单的把算法说了如果能看到结果的棋盘可能会更好理解一点。 这里先把题目说一下:在一个2k x 2k ( 即:2^k x 2^k )个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示原创 2009-09-18 00:02:00 · 1769 阅读 · 2 评论 -
求解线性方程组--Gauss-Seidel迭代法
求解线性方程组--Gauss-Seidel迭代法/* 求解线性方程组--Gauss-Seidel迭代法 */#include <iostream>#include <cmath>using namespace std;/* 二维数组动态分配模板 */template <class T>T** Allocation2D(int m, int ...原创 2009-08-27 16:13:00 · 2774 阅读 · 0 评论 -
求解线性方程组--Jacobi迭代法
求解线性方程组--Jacobi迭代法/* 求解线性方程组--Jacobi迭代法 */#include <iostream>#include <cmath>using namespace std;/* 二维数组动态分配模板 */template <class T>T** Allocation2D(int m, int n){ T *...原创 2009-08-27 16:01:00 · 1632 阅读 · 0 评论 -
求解线性方程组--追赶法
求解线性方程组--追赶法/* 求解线性方程组--追赶法 *///####################################//# 本分解法仅适用于当 #//# 系数矩阵为三对角形阵的情况 #//#####################################include <iostream>...原创 2009-08-27 15:41:00 · 3102 阅读 · 0 评论 -
求解线性方程组--Cholesky分解法
求解线性方程组--Cholesky分解法。源代码用C++实现~~这里采用的是数值分析里的算法。代码在VC6.0下编译通过,经测试没大问题。/* 求解线性方程组--Cholesky分解法 *///####################################//# 本分解法仅适用于当 #//# 系数矩阵为对称正定阵的情况 #/...原创 2009-08-27 10:07:00 · 5541 阅读 · 0 评论 -
求解线性方程组--Doolittle分解法
求解线性方程组--Doolittle分解法。源代码用C++实现~~这里采用的是数值分析里的算法。代码在VC6.0下编译通过,经测试没大问题。/* 求解线性方程组--Doolittle分解法 */#include <iostream>using namespace std;/* 二维数组动态分配模板 */template <class T>T**...原创 2009-08-27 09:57:00 · 6669 阅读 · 0 评论 -
求解线性方程组--全主元消去法
求解线性方程组--全主元消去法。源代码用C++实现~~这里采用的是数值分析里的算法。代码在VC6.0下编译通过,经测试没大问题。/* 求解线性方程组--全主元消去法 */#include <iostream>using namespace std;/* 二维数组动态分配模板 */template <class T>T** Allocation2D...原创 2009-08-27 09:48:00 · 2947 阅读 · 0 评论 -
求解线性方程组--主元消去法
源代码用C++实现~~这里采用的是数值分析里的算法。代码在VC6.0下编译通过,经测试没大问题。/* 求解线性方程组--主元消去法 */#include <iostream>using namespace std;/* 二维数组动态分配模板 */template <class T>T** Allocation2D(int m, int n){ ...原创 2009-08-27 09:28:00 · 1200 阅读 · 0 评论 -
求解线性方程组--高斯消去法
源代码用C++实现~~这里采用的是数值分析里的算法代码在VC6.0下编译通过,经测试没大问题。/* 求解线性方程组--高斯消去法 */#include <iostream>using namespace std;/* 二维数组动态分配模板 */template <class T>T** Allocation2D(int m, int n){ ...原创 2009-08-27 09:05:00 · 1206 阅读 · 0 评论 -
C++ 优秀书籍
《The C++ Standard Library: A Tutorial and Reference》原文版中文版:《C++标准程序库:自修教程与参考手册》这是一本百科全书式的C++标准库著作,是一本需要一再查阅的参考大全。它在完备性、细致性以及精确性方面都是无与伦比的。本书详细介绍了每一标准库组件的规格和用法,内容涵盖包括流和本地化在内的整个标准库而不仅仅是STL。正如本书副标题所示,它首先适合作为教程阅读,尔后又可用作参考手册。浅显易懂的写作风格使得这本书非常易读。如果你希望学习标准库的用转载 2011-01-28 11:52:00 · 1081 阅读 · 0 评论 -
数据结构 -- 魔王语言解释
这是数据结构的实验~~这是实现一个魔王语言解释器。这里是采用栈,队列,线性表的综合实现的。这个程序没上交,所以是中文注释的。其实这个程序本身实用性不强,但是是个很不错的题目。 Experiment2_2.h/* Experiment2_2.h */// - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...原创 2009-09-09 13:40:00 · 5631 阅读 · 0 评论 -
数据结构 -- 算术运算器设计
这是数据结构的实验~~由于某些实验要上交,所以一部分的程序的代码改为英语注释了这是实现中缀表达式求解,根据用户输入的算术表达式,求解表达式的值。这里支持括号(),小数,多位数。采用栈实现,采用了C++STL的stack类。代码可能有点繁杂,因为也进行了对一些输入错误的判断。 Experiment.h 算术运算器的基本算法/* Experiment.h *///...原创 2009-09-08 20:50:00 · 2688 阅读 · 1 评论 -
数据结构 -- 约瑟夫环
这是数据结构的实验~~这是求解经典的约瑟夫环的算法实现。这里是采用循环单链表实现的。所以程序可读性不错。 有朋友发现了这个问题,注释里说退席的顺序是错的,我是直接把老师给的题目粘上去的后来我试验过也发现是错的,但忘了修改了。呵呵正确的序列的确是6, 1, 7, 5, 3, 2, 4(感谢大家指错)程序本身没有错误。 Experiment1_2.h 包括了算法...原创 2009-09-08 20:43:00 · 3051 阅读 · 3 评论 -
数据结构 -- 多项式相加和相乘
这是数据结构的实验~~由于某些实验要上交,所以一部分的程序的代码改为英语注释了这是求解多项式相加和相乘的算法实现。采用线性表就可以实现了。代码可能有点繁杂,因为线性表的实现也包括在里面了。 Experiment1_1.h ,算法的实现的头文件。/* Experiment1_1.h */// - - - - - - - - - - - - - - - - - - -...原创 2009-09-08 20:33:00 · 3804 阅读 · 0 评论 -
C#和java,C#和C++各有什么不同(2) -- 语言规范的比较
2.1、简单数据类型简单数据类型(Primitive)在C#中称为值类型,C#预定义的简单数据类型比Java多。例如,C#有unit,即无符号整数。表2列出了所有C#的预定义数据类型:表2:C#中的值类型 类型 说明 object 所有类型的最终极的基类 string 字符串类型...原创 2009-08-31 10:03:00 · 850 阅读 · 0 评论 -
C#和java,C#和C++各有什么不同(3) -- Java没有的功能
C#出生在Java成熟之后,因此,C#拥有一些Java(目前)还没有的绝妙功能也就不足为奇。3.1、枚举器枚举器即enum类型(Enumerator,或称为计数器),它是一个相关常量的集合。精确地说,enum类型声明为一组相关的符号常量定义了一个类型名字。例如,你可以创建一个名为Fruit(水果)的枚举器,把它作为一个变量值的类型使用,从而把变量可能的取值范围限制为枚举器中出现的值。pub...原创 2009-08-31 10:29:00 · 756 阅读 · 0 评论 -
C#和java,C#和C++各有什么不同(1) -- C#、C++和Java
C#(C-Sharp)是Microsoft的新编程语言,被誉为“C/C++家族中第一种面向组件的语言”。然而,不管它自己宣称的是什么,许多人认为C#更像是Java的一种克隆,或者是Microsoft用来替代Java的产品。事实是否是这样的呢? 本文的比较结果表明,C#不止是Java的同胞那么简单。如果你是一个Java开发者,想要学习C#或者了解更多有关C#的知识,那么本文就是你必须原创 2009-08-31 09:53:00 · 767 阅读 · 0 评论 -
在VC下使用ADO连接数据库编程入门
刚看了孙鑫的VC视频关于使用ADO连接数据库的那节课,发现用VC使用ADO连接数据库确实比想象中要麻烦和复杂。一来要做很多预操作,做很多初始化工作特别是对于不熟悉COM的人,例如我,来说那一堆的变量和方法,以及很多用法,简直看得一头雾水~~ 所以在这把很多入门的内容都记下来,以后可以用了~原文地址:http://www.pconline.com.cn/pcedu/emp原创 2009-09-12 22:53:00 · 905 阅读 · 0 评论 -
算法设计 -- VC控制台模拟“汉诺塔”移动过程
刚开始学习《算法设计与分析》里面的汉诺塔问题的求解算法简直让我无语了··用3个语句就把这么复杂的问题解决了相信很多人跟我一样,对其中实际的移动过程还是不太清楚·我就自己写了这个模拟汉诺塔移动过程的程序~~里面用数字代替圆盘~~数字越大代表的圆盘就越大 我没写可供外部输入的函数,大家可以直接修改程序里的全局数据里的数据就可以了主要可以修改两个,num为圆盘数,建议大家...原创 2009-09-17 23:11:00 · 1623 阅读 · 0 评论 -
桥接模式的很好实现方式(应用shared_ptr)
桥接模式是一种结构型设计模式,它把类的具体实现细节对用户隐藏起来,以达到类之间的最小耦合关系。桥接模式也被称为pimpl惯用法,它可以将头文件的依赖关系降到最小,减少编译时间,而且可以不适用虚函数实现多态。 首先声明一个类Sample,它仅向外界暴露了最小的细节,真正的实现在内部类impl。 Sample.h#pragma once#include <boost/sm...原创 2011-01-26 20:32:00 · 1641 阅读 · 0 评论 -
设计模式 -- 代理模式 -- c++实现
注:本文主要代码基于大话设计模式里的C#代码(第7章)。 UML图: 代理模式的实现:代理模式很好实现,注意的是要将RealSubject要代理的功能抽象出一个Subject接口,让Proxy代理类实现该接口,这样外界可以通过代理对象直接使用RealSubject的功能。 实体类可以将自己的不同功能代理出去,这样实体类只跟代理类耦合,外界只跟代理类耦合。代理...原创 2010-06-04 11:08:00 · 2145 阅读 · 1 评论 -
设计模式 -- 简单工厂模式 -- c++实现
注:本文主要代码基于大话设计模式里的C#代码(第1章)。简单工厂模式只要用一个简单的switch case语句就可以实现了。在c++下,可以使用函数实现工厂函数。下面代码是为了实现将运算操作逻辑解耦出来。以便复用。同时采用工厂模式生产具体的运算类。将运算操作进行抽象是为了以后可以方便增加其他的运算操作。代码如下:/**************************...原创 2010-06-03 17:42:00 · 904 阅读 · 0 评论 -
设计模式 -- 装饰模式 -- c++实现
注:本文主要代码基于大话设计模式里的C#代码(第6章)。 UML图: 我知道装饰模式的实现不好理解,所以我尽量在代码里加了详尽的注释在我理解,理解装饰模式的重点在于-->理解其使用了链表形式将各装饰对象链成一条装饰链。 策略模式的实现:由组件类派生出装饰类,由装饰类再派生出具体的装饰类,每个装饰类再添加自己的附加功能组装的时候要一层一层地往上装饰,调用...原创 2010-06-04 00:07:00 · 1872 阅读 · 2 评论 -
设计模式 -- 策略模式 -- c++实现
注:本文主要代码基于大话设计模式里的C#代码(第2章)。 UML图: 策略模式的实现:将所要用的所有算法抽象出一个接口(所以每个算法要用类实现)使用一个策略上下文类,封装一个算法接口的指针,并提供一个函数给外部调用具体算法。外部用具体算法类的指针来创建策略上下文类。下面代码是一个商场收费系统的抽象,将收费的算法(普通,打折,返利)抽象成cCashSuper接口...原创 2010-06-03 18:03:00 · 1773 阅读 · 0 评论 -
C++的那点事,const的所有用法
C++中的const的用法可谓博大精深,活用const对于代码的健壮性,可读性都有很大的帮助。如果面试官问你const的用法时,可千万不能只说:定义只读类型。 一、对于基本声明 1.const int r=100;//标准const变量声明加初始化,因为默认内部连接所以必须被初始化,其作用域为此文件,编译器经过类型检查后直接用100在编译时替换。 2.extend cons...原创 2010-05-07 23:52:00 · 959 阅读 · 1 评论 -
北京大学PKU在线测评系统 3078题 Q
原题:QTime Limit: 1000MS Memory Limit: 65536K Total Submissions: 1188 Accepted: 838 DescriptionYou've got a queue. And you just got to mess with it.Given a queue of items and ...原创 2010-03-20 10:00:00 · 1991 阅读 · 0 评论 -
C++的那点事,const,指针和引用的混合使用
对于学习Java或者C#的程序员来说,学习C++的时候,大概看到那些使用const int*& a之类的当参数时都会蒙了吧··老实说,尽管当时我觉得自己C++书都看差不多了,学得也可以,但实际上,看到const,"*","&"的混合使用时,我也蒙了。这篇文章就我自己的一些看法来谈谈不同的混合方式都有什么作用。 没有const的时候。 没有const时,也就是*...原创 2010-03-23 08:52:00 · 2113 阅读 · 4 评论 -
解决"Error C2338 The C++ Standard forbids containers of const elements ..."
解决"Error C2338 The C++ Standard forbids containers of const elements because allocator"问题最近在用Visual Studio 2017编译Brofiler(一个C++的Profiler)时,遇到了一些问题,其中一个就是这个Error C2338。原因因为在STL容器模板中使用了const,在C++11的标...原创 2019-02-17 19:38:30 · 4701 阅读 · 0 评论