
C/C++
文章平均质量分 88
暴熊
看英超,听歌,学习!
QQ:908965890
展开
-
Montgomery 快速幂模算法
快速计算乘方的算法:如计算2^13,则传统做法需要进行12次乘法。//计算n^punsigned power(unsigned n,unsigned p){ for(int i = 0; i < p; i++) n *= n; return n;} 优化如下:把2*2的结果保存起来:4*4*4*4*4*4*2 再把4*4的结果保存起来:原创 2009-10-04 16:59:00 · 1287 阅读 · 0 评论 -
最大值最小值查找算法(C++实现)
最大值最小值查找算法 运用了分而治之的思想templatebool MinMax(T w[], int n, T& Min, T& Max){ //寻找w[0:n-1]中的最小和最大值 if (n < 1) return false; if (n == 1) { Min = Max = 0; return true; } // 对原创 2009-10-10 15:49:00 · 6871 阅读 · 0 评论 -
B-树(c++实现)
从10月14日b-树第1个版本,经过1天多的反复测试和修改,终于出了今天10月16日的最终版本,哈哈,b-树顺利拿下templateclass BMTree{public: BMTree() {root = 0; height = 0;} ~BMTree() { } bool Search(const K& k, E& e) const; BMTree& I原创 2009-10-14 23:20:00 · 1038 阅读 · 0 评论 -
QueryPerformanceFrequency() - 基本介绍(转)
QueryPerformanceFrequency() - 基本介绍类型:Win32API原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);作用:返回硬件支持的高精度计数器的频率。返回值:非零,硬件支持高精度计数器;零,硬件不支持,读取失败。QueryPerformanceFrequency() - 技术特转载 2009-11-06 10:34:00 · 785 阅读 · 0 评论 -
vs2008 std::fstream以及std::ifstream打开中文路径名失败的解决方法
vs2003都没有此问题,vs2008就有此问题,解决方法如下:// 支持中文文件目录std::locale loc = std::locale::global(std::locale(""));原创 2010-01-13 23:38:00 · 2749 阅读 · 1 评论 -
TGA类C++
tga 文件头信息如下图:代码如下:#ifndef __XETGA_H__ #define __XETGA_H__ #include "XEPrerequisites.h"namespace XE{struct TGA_HEADER{ unsigned short _width; ///<tga宽度 unsigned sho原创 2009-12-15 22:45:00 · 1960 阅读 · 0 评论 -
[转]3ds max sdk导出插件编写的心得
[转]3ds max sdk导出插件编写的心得作者:yhchinabest来自:CG先生-3D图形插件开发网http://www.cgsir.com/环境配置步骤1.首先你得有VS2005,3ds Max 9,如果有就好办了,否则想办法搞到手吧,在中国做到这点应该不难。至于其他相近版本的IDE和MAX,情况基本类似。 步骤2.在3ds Max9 SDK"maxsdk转载 2010-03-10 22:45:00 · 2668 阅读 · 0 评论 -
游戏中的资源管理――资源高速缓存(转)
1.什么是资源高速缓存资源高速缓存的原理与其它内存高速缓存的工作原理是相似的。在游戏的状态转换过程中,有些数据是刚才使用过的,那么直接从资源高速缓存中载入即可。例如,RPG游戏中主角从大地图进入一个房间,探索一番后主角退出房间,此时只要直接从缓存中载入大地图数据即可,节省了从硬盘载入数据的时间,要知道从硬盘载入数据是非常慢的。当然,如果你的游戏所使用的数转载 2010-04-08 15:53:00 · 1594 阅读 · 0 评论 -
网络游戏程序中解决加载卡顿的有效方法(转)
对于3d视频游戏来说,游戏引擎的性能是至关重要的。玩家在体验一款游戏时,游戏的流畅度是最基本的要求。与单机游戏不同,网络游戏更需要考虑性能问题,因为无法像单机游戏那样,控制游戏元素的复杂度来达到效率的要求。大量玩家涌入同一片区域,同屏出现大量的游戏角色是无法避免的,因此游戏帧率的大幅下降,系统资源的大量消耗也很难避免,这是网络游戏引擎最难处理的问题之一。 这里要讲一下游戏帧率的控制,通常玩家转载 2010-04-08 16:00:00 · 1916 阅读 · 1 评论 -
prim算法(C++实现)
prim算法也遵循贪婪原则,所以也属于贪婪算法,它用来生成一棵最小消耗生成树templatebool Prim(EdgeNode t[]){ //如果不连通则返回false //如果连通,则在t[0->n-2]中返回最小生成树 int n = Vertices(); bool *selected = new bool [n+1]; VertexNode1 *VN1 =原创 2009-10-09 22:06:00 · 3846 阅读 · 0 评论 -
Dijkstra算法(c++实现)
Dijkstra算法一种贪婪算法,可以解决图的单源最短路径问题void Dijkstra(int s, T d[], int p[]){ //寻找从顶点s出发的最短路径,在d中存储的是s->i的最短距离 //p中存储的是i的父节点 if (s n) throw OutOfBounds(); //路径可到达的顶点列表,这里可以用最小堆 Chain L;原创 2009-10-09 20:15:00 · 1591 阅读 · 0 评论 -
AVLTree - 二叉平衡树的实现之一(C++)
templateclass AVLtree {public: AVLtree() {root = 0;} ~AVLtree() {Erase(root);} bool Search(const K& k, E& e) const; AVLtree& Insert(const E& e); AVLtree& Delete(const K& k, E& e)原创 2009-10-07 21:50:00 · 1198 阅读 · 0 评论 -
AVLTree - 二叉平衡树的实现之二(C++)
此AVLTree的实现 比上一篇的实现,从代码的观赏性和简洁性来看,更加棒,更加好看,不过效率上没有上一个实现快,初学者看这个实现更容易理解AVLTree两个关键性操作的实现templateclass AVLtree2{private: AVLNode* root; void LeftSingleRotate(AVLNode*& p原创 2009-10-08 15:07:00 · 832 阅读 · 0 评论 -
拓扑排序算法(C++实现)
bool Topological(int v[]){ //计算有向图中顶点的拓扑次序 //如果找到了一个拓扑次序,则返回true, 此时, 在v[0->n-1]中记录拓扑次序 //如果不存在拓扑次序,则返回false int n = Vertices(); //计算入度 int *InDegree = new int [n+1]; Initialize原创 2009-10-09 22:20:00 · 1892 阅读 · 0 评论 -
QuickSort - 快速排序算法(C++)
分快速排序采用的是分而治之的思想来进行的排序,测试下来比归并排序 更快一点为什么更快一点?我的理解:是n个元素被分成 左, 中, 右三段,中段只有一个元素,左段中各个元素都小于等于中段元素,右端中各个元素都大于等于终端元素,因此左右两端中的元素集合不仅变成了可以独立处理的小集合,而且还不必对他们在进行各自的排序后的结果再进行合并, 而归并排序多了这步,所以快速排序比归并排序更快点原创 2009-10-10 10:51:00 · 1257 阅读 · 1 评论 -
kruskal算法(C++实现)
kruskal算法也遵循贪婪原则,所以也属于贪婪算法,它用来生成一棵最小消耗生成树templatebool Kruskal(EdgeNode t[]){ //如果不连通则返回false //如果连通,则在t[0->n-2]中返回最小生成树 int n = Vertices(); int e = Edges(); InitializePos(); EdgeNo原创 2009-10-09 21:16:00 · 2304 阅读 · 0 评论 -
MergeSort-归并排序(C++实现)
归并排序采用的是分而治之的思想来进行的排序,效率确实不错分而治之的思想: 是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题类似或相同,递归的解这些子问题,然后将子问题的解合并得到原问题的解。templatevoid Merge(T c[], T d[], int l, int m, int r){ // 把 c[l:m]] 和 c[m:r] 归并到原创 2009-10-09 23:48:00 · 3088 阅读 · 3 评论 -
寻找第k大或第k小的算法 -- 内存足够(C++实现)
内存足够的情况下,寻找第k大或第k小的算法1:递归:templateT select(T a[], int l, int r, int k){ //在a[l:r]中选择第k小的元素 if (l >= r) return a[l]; int i = l, // 从左至右的游标 j = r + 1; // 从右至左的游标 T pivot =原创 2009-10-10 14:45:00 · 1273 阅读 · 0 评论 -
图的点对最短路径算法(C++实现)
图的点对最短路径算法:运用了动态规划的思想设图G中n 个顶点的编号为1到n。令c (i, j, k)表示从i 到j 的最短路径的长度,其中k 表示该路径中的最大顶点。因此,如果G中包含边i, j>,则c(i, j, 0) =边i, j> 的长度;若i= j ,则c(i,j, 0)=0;如果G中不包含边i, j>,则c (i, j, 0)= +∞。c(i, j, n) 则是从i 到j 的最短路径原创 2009-10-11 15:16:00 · 3131 阅读 · 0 评论 -
MSDN "无法显示该网页" 的问题解决方案
<br />在运行里面执行以下命令:<br />regsvr32 hhctrl.ocx<br />regsvr32 itss.dll<br />regsvr32 itircl.dll<br /><br />regsvr32 "C:/Program Files/Common Files/Microsoft Shared/Help/hxds.dll"原创 2010-07-20 11:49:00 · 723 阅读 · 0 评论 -
CreateWindow失败的一个原因
<br />调用CreateWindow时,会调用一次WndProc,并且要求WndProc返回TRUE,否则就会CreateWindow失败原创 2010-09-07 22:52:00 · 2288 阅读 · 2 评论 -
BMP类C++实现
<br />#ifndef __BITMAP_H#define __BITMAP_H#include "XEPrerequisites.h"#include <stdio.h>#include <string>namespace XE {/// /struct BMP_HEADER/// /brief .bmp文件 的 文件头信息struct BITMAP_HEADER{ char _id1; ///< 两字节的内容用来识别位原创 2010-12-07 14:02:00 · 2708 阅读 · 0 评论 -
vs2008 编译时 出现 -1073741289 错误
vs2008 编译时 出现 -1073741289 错误,查了很久,是因为incredibuild没有处于运行状态原创 2013-04-17 15:49:23 · 1110 阅读 · 1 评论 -
为什么会出现__imp____glutInitWithExit@12和无法解析的外部符号
在编写OpenGL程序时,当使用到glut库时,编译能够成功,但是在执行的时候,就会 出现__imp____glutInitWithExit@12和无法解析的外部符号和__imp____glutCreateWindowWithExit@8无法解析。 这个问题的解决:在#include 之前(一定要在其前)加上下列代码: #ifndef GLUT_DISABLE_ATEXIT_HAC转载 2013-04-17 18:18:51 · 984 阅读 · 0 评论 -
vs2010 无法找到调试信息 或者调试信息不匹配
在visual里找到pdb相关的配置选项,共2个如下:configuration property->c/c++->output files->program database file name这是编译时产生的pdb文件的输出位置,vs在编译后会将该位置符合$(TargetName).pdb格式的文件复制到configuration property->general的outpu原创 2013-06-12 20:10:33 · 16604 阅读 · 1 评论 -
OGRE渲染流程学习记录1
Root->renderOneFrame(); Root->_updateAllRenderTargets(); RenderSystem->_updateAllRenderTargets();(RenderSystem->mPrioritisedRenderTargets) RenderTarget->update(bool swapBuffers = true);原创 2013-08-21 11:45:14 · 1253 阅读 · 0 评论 -
匀速贝塞尔曲线运动(续)
转:http://www.thecodeway.com/blog/?p=749自从上次我写那篇讨论贝塞尔曲线的文章之后,一直有一些朋友问我关于如何实现更高次贝塞尔曲线匀速运动的问题,比如三次曲线。 实现匀速运动的关键的一个问题就是如何积分求得曲线长度,其实在实际工程中,很多情况是无法直接求得一个函数积分后的表达式的,这种情况就要用数值积分(Numerical integratio转载 2013-08-20 21:03:32 · 7128 阅读 · 0 评论 -
3D图形渲染管线
什么是渲染(Rendering) 渲染简单的理解可能可以是这样:就是将三维物体或三维场景的描述转化为一幅二维图像,生成的二维图像能很好的反应三维物体或三维场景(如图1): 图1:Rendering什么是渲染管线 渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的的并行处理单元。一个流水线是一序列可以并行和按照转载 2013-08-24 17:53:46 · 1614 阅读 · 0 评论 -
UE在Win7下添加右键菜单
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell][HKEY_CLASSES_ROOT\*\shell\UltraEdit]@="UltraEdit-32"[HKEY_CLASSES_ROOT\*\shell\UltraEdit\Command]@="C:\\Program Files (x86)转载 2013-09-06 01:27:39 · 1430 阅读 · 0 评论 -
VS2010 LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
原来机器上安装了VS2010非常正常,安装VS2012后,出现提示错误 error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏,出现的具体原因是微软的链接文件的格式变了微软官方给出的具体解决方法是给VS2010打SP1补丁。下载地址是:http://www.microsoft.com/en-us/download/details.aspx?id=23691原创 2013-11-20 11:06:32 · 1631 阅读 · 1 评论 -
CONTAINING_RECORD宏的详细解释(转)
宏CONTAINING_RECORD的用处其实还是相当大的, 而且很是方便, 它的主要作用是: 根据结构体中的某成员的指针来推算出该结构体的指针! 下面从一个简单的例子开始说起: 我们定义一个结构体, 同时类型化:typedef struct{ int a; int b; int c;}ss; 这是一个很简单的结构体, 没什么特殊的转载 2013-03-02 16:07:28 · 691 阅读 · 0 评论 -
Navigation Mesh与Line-of-Sight Test(转)
上图是一个由任意凸多边形构成的导航网格,白线包围区域代表着不可进入的障碍区域,红线包围区域则可以进入或穿越。网格中所有多边形的顶点存储次序均为顺时钟序。在下面的讨论中,我们的运算一概采用左手系进行。假设当前所处的位置为p0,视线方向矢量为n0,p0位于多边形A中,我们知道每一条边的两侧的多边形的编号,现在的问题是:如果求得该视线途经了哪些多边形?与这些多边形的哪些边相交于何处(即Way poi转载 2012-07-26 14:29:01 · 1431 阅读 · 0 评论 -
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.... 此错误的解决方法
<br />调用DLL里的函数 或 类成员函数 碰到此错误:<br />Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a dif原创 2010-11-10 13:32:00 · 9708 阅读 · 0 评论 -
c宏定义的技巧总结(转)
<br />1,防止一个头文件被重复包含 <br />#ifndef COMDEF_H <br />#define COMDEF_H <br />//头文件内容 <br />#endif <br />2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 <br />typedef unsigned char boolean; /* Boolean value type. */ <br /> <br />typedef unsigned long int转载 2010-11-12 15:08:00 · 894 阅读 · 0 评论 -
位模式下的逻辑运算(转)
<br />位模式下的逻辑运算<br />修改整数值中的位时,可以使用4个按位运算符,如表3-1所示。<br />表1按位运算符<br />运 算 符<br />说 明<br />~<br />这是按位求反运算符。它是一个一元运算符,可以反转操作数中的位,即1变成0,0变成1<br />&<br />这是按位与运算符,它对操作数中相应的位进行与运算。如果相应的位都是1,结果位就是1,否则就是0<br />^<br />这是按位异或运算符,它对操作数中相应的位进行异或运算。如果相应的位各不相同,例如一个位是1转载 2011-04-26 13:32:00 · 1170 阅读 · 0 评论 -
精确控制游戏的fps
__int64 frequency, count, oldCount; DWORD_PTR _procMask; DWORD_PTR _sysMask; DWORD_PTR _mask; GetProcessAffinityMask(GetCurrentProce原创 2011-07-06 21:08:15 · 909 阅读 · 0 评论 -
c++的break和continue的"标签用法"
最近在看FlashActionScript3 , 有个break和continue的标签用法, 觉得其实c++也能实现类似的东东, 代码如下#include int main(int argc, char* argv[]){ std::cout " << std::endl; for (int i = 0; i < 10; i++) { for (i原创 2011-11-02 11:26:09 · 2912 阅读 · 0 评论 -
共享队列和双队列
1第一种方式,共享队列两个线程共享一个队列,一个往里写,一个往外读,我将写入数据的那个线程叫做writer,读出数据的那个线程叫做reader。这样,writer线程在工作时,reader线程只能等待,reader线程在工作时写线程只能等待。有人会说,可以多来几个reader这样可以使用RWLOCK,但根据应用场景,这里就只有一个消费者。这是一种最简单的方式,也是最基本的方式,效率也很低。在这转载 2012-07-12 11:07:54 · 5050 阅读 · 0 评论 -
Waypoint 与 NavMesh 比较(转)
3.5正式版终于出炉了 相比新的粒子系统 我更期待的是他自带的navmesh寻路以下是楼主搜来的一篇关于Waypoint 与 NavMesh 比较的博文 有兴趣的童鞋多研究下哦 图片:1.png图片:2.png图片:3.png图片:4.转载 2012-07-26 14:16:14 · 1289 阅读 · 0 评论 -
匀速贝塞尔曲线运动的实现(转)
转:http://www.thecodeway.com/blog/?p=293二次贝塞尔曲线通常以如下方式构建,给定二维平面上的固定点P0,P1,P2,用B(t)表示该条曲线用一个动画来演示,可以更加清楚的表明这条曲线的构建过程(图片转自wikipedia)如果t变量本身线形变化的话,这条贝塞尔曲线本身的生成过程是并不是匀速的,通常都是两头快中间慢。如何想要得到匀速转载 2013-08-20 21:01:16 · 14000 阅读 · 2 评论