
C/C++
文章平均质量分 68
a_1_2_ab
这个作者很懒,什么都没留下…
展开
-
深入探索AOI算法实现(十字链表篇)
游戏的AOI算法应该算作游戏的基础核心了,许多逻辑都是因为AOI进出事件驱动的,许多网络同步数据也是因为AOI进出事件产生的。因此,良好的AOI算法和基于AOI算法的优化,是提高游戏性能的关键。我在实践中所熟知的游戏AOI算法大致有两种,在此做一些总结,顺便梳理一下,打算设计出一套统一的接口封装不同的算法实现(网络上还有些其他算法,因为不熟悉不作记录了)。我所记录的这两种算法也算经典了,一个叫做网格法,一个叫做双链表法。具体细节可参考如下:https://zhuanlan.zhihu.com/p/2015原创 2021-03-23 16:16:00 · 2437 阅读 · 2 评论 -
深入探索AOI算法实现(九宫格篇)
游戏的AOI算法应该算作游戏的基础核心了,许多逻辑都是因为AOI进出事件驱动的,许多网络同步数据也是因为AOI进出事件产生的。因此,良好的AOI算法和基于AOI算法的优化,是提高游戏性能的关键。我在实践中所熟知的游戏AOI算法大致有两种,在此做一些总结,顺便梳理一下,打算设计出一套统一的接口封装不同的算法实现(网络上还有些其他算法,因为不熟悉不作记录了)。我所记录的这两种算法也算经典了,一个叫做网格法,一个叫做双链表法。具体细节可参考如下:https://zhuanlan.zhihu.com/p/2015原创 2021-03-21 13:32:21 · 1997 阅读 · 0 评论 -
7个示例科普CPU Cache
7个示例科普CPU Cache示例1内存访问和运行示例2缓存行的影响示例3L1和L2缓存大小示例4指令级别并发示例5缓存关联性示例6缓存行的伪共享false-sharing示例7硬件复杂性关于第7个例子的一个回帖PS个人感悟局部性原理和流水线并发参考资料为什么程序员需要关心顺序一致性Sequential Consistency而不是Cache一致性Cache Coherence翻译 2015-05-15 13:54:19 · 1498 阅读 · 0 评论 -
C/C++预处理器
C/C++编译系统编译程序的过程为预处理、编译、链接。预处理器是在程序源文件被编译之前根据预处理指令对程序源文件进行处理的程序。预处理器指令以#号开头标识,末尾不包含分号。预处理命令不是C/C++语言本身的组成部分,不能直接对它们进行编译和链接。C/C++语言的一个重要功能是可以使用预处理指令和具有预处理的功能。C/C++提供的预处理功能主要有文件包含、宏替换、条件编译等。 1、文件包含翻译 2015-01-20 21:14:20 · 603 阅读 · 0 评论 -
C语言从stdin读取一行字符串的几种方法
C语言从stdin读取一行字符串的几种方法getsgets函数的头文件是,原型如下:char *gets(char *s);gets从stdin中读入一行内容到s指定的buffer中,当遇到换行符或EOF时读取结束。读取成功时,返回s地址;失败时返回null。需要注意的是,gets会将行末尾的'\n'字符或EOF替换成'\0',这样,ge翻译 2014-12-15 21:46:40 · 3072 阅读 · 0 评论 -
C++ 关于声明,定义,类的定义,头文件作用,不具名空间
转 自:http://www.cnblogs.com/rocketfan/archive/2009/10/02/1577361.html1. 编译单元:一个.cc或.cpp文件作为一个编译单元,生成.o。2. 普通数据类型的定义、声明,函数的定义、声明(类函数是一样的)。extern int x; // 变量是声明,并未实际分配地址,未产生实际目标代码 void pri翻译 2014-11-13 21:22:43 · 1252 阅读 · 1 评论 -
extern C的作用详解
转载于:http://www.cnblogs.com/rollenholt/archive/2012/03/20/2409046.html1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而翻译 2014-11-14 10:45:01 · 927 阅读 · 0 评论 -
红黑树的实现
在写完线性容器以后,再来看关联性容器。在关联性容器中,set,map容器都是基于红黑树而实现的,故花了几天时间写下来红黑树的代码。其原理可以参考算法导论。在写过程中也参照了网上别人写的代码。其代码实现如下:#includeusing namespace std;//红黑树class RB_Tree{private: enum COLOR{RED,BLACK}; cl原创 2014-04-25 16:08:49 · 1222 阅读 · 0 评论 -
深入理解C++中的new操作符
今天在学习STL源码时,发现其中关于内存配置器allocate不是很懂,于是在网上找了写资料去了解,发现其还是基于new操作符,不过,必须深入理解new,然后在利用new,进行改造,使之更加高效管理内存。以下是在网上找到的关于new的一些理解:“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个原创 2014-03-26 21:29:48 · 1131 阅读 · 0 评论 -
深入理解++a和a++
在这里主要研究一下c语言和c++中的a++,++a有分双操做数和多操做数之分双操做数:在语言中定义a++是先用后加,++a是先加后用。实际上对双操做数来说的是在一个语句中结束前加和后加的问题 。即如k=(++a)+(a++);a++是语句结束后在后加,++a是先加后计算再语句结束。 我举几个例子(用反汇编说明)1 int k=2;int val=0;翻译 2014-04-08 11:04:49 · 1222 阅读 · 0 评论 -
从KMP算法,trie树再到AC自动机
首先讲解一下KMP算法,KMP算法是讲的是单模式字符串匹配算法。由于传统的字符串匹配算法中,当发现匹配不满足要求时,模式串将会回到开头,而待匹配字符串也有回到相对应的匹配位子的下一个,重新进行匹配。而Kmp算法则是利用一个next函数(表示字符串的自我覆盖程度)。当匹配不成功时,待匹配字符串的比较位置将不移动,而是利用next函数来计算模式串应该要计较的位子(由于next函数特性,模式串从起始位子原创 2014-03-19 21:35:50 · 1319 阅读 · 0 评论 -
数组指针
3 2位机 int *p = NULL;sizeof(p)的值是多少? 4 sizeof(*p)呢? 4 这里需要理解原创 2011-07-05 15:21:17 · 715 阅读 · 0 评论 -
位运算
位运算符有:&(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。优先级从高到低,依次为~、&、^、|,位运算符的一些简单应用:按位与运算有两种典型用法,一是取一个位串信息的某几位,如以下代码截取x的最低7位:x & 0177。二是让某变量保留某几位,其余位置0,如以下代码让x只保留最低6位:x = x & 077。按位或运算的典型用法是将一个位串信息的某几位置成1。如将要获得最右4为1,原创 2011-06-24 09:17:00 · 685 阅读 · 0 评论