inline函数注意 前不久在写代码的时候遇到一个link错误,代码的原型如下所示,基本就是定义了一个基类和派生类,在派生类的一个成员函数中用到了基类定义的一个内联函数。[cpp] view plain copy print?// base.h class Base { protected: void fun(); };
decltype decltype类似于sizeof操作符,decltype也不需对其操作数求值。粗略来说,decltype(e)返回类型前,进行了如下推导:1.若表达式e指向一个局部变量、命名空间作用域变量、静态成员变量或函数参数,那么返回类型即为该变量(或参数)的“声明类型”;2.若e是一个左值(lvalue,即“可寻址值”),则decltype(e)将返回T&,其中T为e的类型;
zkw线段树详解 前言首先说说出处:清华大学 张昆玮(zkw) - ppt 《统计的力量》本文(辣鸡)编辑:BeiYu写这篇博客的原因: 1.zkw线段树非递归,效率高,代码短 2.网上关于zkw线段树的讲解实在是太少了 3.个人感觉很实用更新日志20160327-Part 1(zkw线段树的建立)20160329-Part 2(单点操作)20160329-Part 3(区间操作
最小费用流 1. 网络流的一些基本概念 点击阅读 很多同学建立过网络流模型做题目, 也学过了各种算法, 但是对于基本的概念反而说不清楚. 虽然不同的模型在具体叫法上可能不相同, 但是不同叫法对应的思想是一致的. 下面的讨论力求规范, 个别地方可能需要对通常的叫法加以澄清. 求解可行流: 给定一个网络流图, 初始时每个节点不一定平衡 (每个节点可以有盈余或不足), 每条边的流量可以有上下
退流问题 放假以来把网络流看来几篇,今天终于有点感觉,网上很多资料,我认为网络流最难理解的是加反向边,这个东西纠结了很久,网上搜到一个blog才领悟到一句真理:“反向边的作用就是给程序一个可以后悔的机会”,详细请看下面的文章,由于自己对网络流还是vegetables bird,所以只好转一下人家写的好文章。网络流(Network Flow) 将每条
最小费用流 大致题意:给定一个N*M的地图,地图上有若干个man和house,且man与house的数量一致。man每移动一格需花费$1(即单位费用=单位距离),一间house只能入住一个man。现在要求所有的man都入住house,求最小费用。 解题思路:费用流问题。 构图: 把man作为一个顶点集合U,house作为另一个顶点集合V,把U
基于WiFi的室内定位 摘要GPS难以解决室内环境下的一些定位问题,大部分室内环境下都存在WiFi,因此利用WiFi进行定位无需额外部署硬件设备,是一个非常节省成本的方法。然而WiFi并不是专门为定位而设计的,传统的基于时间和角度的定位方法并不适用于WiFi。近十年来,在室内WiFi场景下的定位中,位置指纹法被广泛研究和采用。本文对WiFi位置指纹法进行综述,提出了这个领域面临的挑战,介绍最新的研究,以及提供一些
vector释放内存 1.避免频繁重分配关于STL容器,最令人称赞的特性之一就是是只要不超过它们的最大大小,它们就可以自动增长到足以容纳你放进去的数据。(要知道这个最大值,只要调用名叫max_size的成员函数。) 对于vector和string,如果需要更多空间,就以类似realloc的思想来增长大小。这个类似于realloc的操作有四个部分:分配新的内存块,它有容器目前容量的倍数。在
最短路径的一些算法 很早就想写一下最短路的总结了,但是一直懒,就没有写,这几天又在看最短路,岁没什么长进,但还是加深了点理解。于是就想写一个大点的总结,要写一个全的。在本文中因为邻接表在比赛中不如前向星好写,而且前向星效率并不低所以,本文的代码 存图只有两种: 前向星 or 邻接矩阵本文包含如下内容:1、Bellman-Ford算法2、Dijkstra算法(代码 以邻接矩阵为例
邻接链表构建图 图的表示:邻接矩阵表示法:对于上面一个有向图的一种简单的表示方法是使用二维数组,称为邻接矩阵表示法。如果是无向图,对于每条边(u, v),将二维数组元素arr[u][v]值设置为true;否则该数组元素为false;如果是有向图,对于每条边(u, v),将二维数组元素arr[u][v]值设置为该边的权重;否则该数组元素设置为一个很大的数值或是一个
最小费用最大流问题 网络流相关知识参考: http://www.cnblogs.com/luweiseu/archive/2012/07/14/2591573.html 出处:優YoU http://blog.csdn.net/lyy289065406/article/details/6732762大致题意:给定一个N*M的地图,地图上有若干个man和house,且man与house的
优化dijkstra算法 [cpp] view plain copy print?//邻接表+优先队列+Dijkstra模版 #include #include using namespace std; #define MAXN 101 #define INF 999999 class Graph; //有向图 clas
引用是否占内存 分析一下 C++ 里面的引用类型(例如: int &r = a; )中的 r 变量是否占用内存空间呢?是否和 int *p = &a; 中的 p 变量一样占用内存空间呢?本文将给出答案。直接看一个简单的例子:#include using namespace std;int main(void){ int a = 6; int &r
常见的动态规划问题分析与求解 常见的动态规划问题分析与求解 动态规划(Dynamic Programming,简称DP),虽然抽象后进行求解的思路并不复杂,但具体的形式千差万别,找出问题的子结构以及通过子结构重新构造最优解的过程很难统一,并不像回溯法具有解决绝大多数问题的银弹(全面解析回溯法:算法框架与问题求解)。为了解决动态规划问题,只能靠多练习、多思考了。本文主要是对一些常见的动态规划题目的收集,希望能有所帮助。
动态规划 动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂了,发现当自己做题的时候又会觉得无所适从。我觉得,理解算法最重要的还是在于练习,只有通过自己练习,才可以更快地提升。话不多说,接下来,下面我就通过一个
静态存储区、栈区、堆区的区别 内存分配有三种:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。栈区:在执行函数时,函数(包括main函数)内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限
初始化和赋值的区别 折腾我挺长一段时间,基本挺明白了,先来个区别说明:赋值操作是在两个已经存在的对象间进行的,而初始化是要创建一个新的对象,并且其初值来源于另一个已存在的对象。编译器会区别这两种情况,赋值的时候调用重载的赋值运算符,初始化的时候调用拷贝构造函数。如果类中没有拷贝构造函数,则编译器会提供一个默认的。这个默认的拷贝构造函数只是简单地复制类中的每个成员。 下面看例子。 c++中初始化和赋值操作差
string类 [objc] view plain copy print?#include #include #include #include using namespace std; class String { friend bool operator == (const Str
A*算法 Amit's A star Page中译文 译序这篇文章很适合A*算法的初学者,可惜网上没找到翻译版的。本着好东西不敢独享的想法,也为了锻炼一下英文,本人译了这篇文章。由于本人英文水平非常有限,六级考了两次加一块不超过370分,因此本译文难免存在问题。不过也算是抛砖引玉,希望看到有更多的游戏开发方面的优秀译作出现,毕竟中文的优秀资料太少了,中国的游戏开发者的路不好走
人人工势场法 人工势场法是局部路径规划的一种比较常用的方法。这种方法假设机器人在一种虚拟力场下运动。一、简介如图所示,机器人在一个二维环境下运动,图中指出了机器人,障碍和目标之间的相对位置。 这个图比较清晰的说明了人工势场法的作用,物体的初始点在一个较高的“山头”上,要到达的目标点在“山脚”下,这就形成了一种势场,物体在这种势的引导下,避开障碍物,到达目标点。