
智能|算法
yiweibin
这个作者很懒,什么都没留下…
展开
-
std::sort函数中的陷阱
前几天收到游戏中一个很严重的bug,执行某项操作的时候会出现卡死的现象。最后调试的时候定位到std的sort函数,发现一进这个函数就出不来了,很可能在里面出现了死循环。刚开始,我还是很诧异。大名鼎鼎,久经考验的的STL算法也会出现死循环?于是baidu了一下,果然在网上也发现不少人碰到过类似情况。出现死循环大多是由于在sort函数中的比较函数里面相等元素返回了true。 std的sort函原创 2010-03-10 21:56:00 · 5585 阅读 · 0 评论 -
std::vector中的陷阱
自从上次经历了sort的死循环之后,让我觉得有必要重新审视一下STL的容器。vector是STL中最普通的一个容器,也是用的最多的一个容器。当我阅读vector的源码后,还是发现有很多陷阱,这些陷阱稍不留神也许就会让你的程序死的很难看。 一.增加元素时的陷阱vector中常用的增加元素的方法是pushBack和insert。大家先看看这样一段程序: int _tmain(int原创 2010-03-15 21:36:00 · 5943 阅读 · 2 评论 -
平衡二叉树与红黑树
AVL树的定义: 一棵AVL树满足以下的条件: 1>它的左子树和右子树都是AVL树 2>左子树和右子树的高度差不能超过1 从条件1可能看出是个递归定义,如GNU一样. 性质: 1>一棵n个结点的AVL树的其高度保持在0(log2(n)),不会超过3/2log2(n+1) 2>一棵n个结点的AVL树的平均搜索长度保持在0(log2(n)). 3>一棵n个结点的AVL树删除一个结点做平衡化旋转所需转载 2010-03-20 21:39:00 · 16157 阅读 · 3 评论