读书笔记
文章平均质量分 89
奔跑的小河
从博客中来,到博客中去。
展开
-
【结构之法】二叉树中节点的最大距离
前言:编程之美中的解法并不是最好的,所以这里给出大神的解法。问题:如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义”距离”为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。 思路计算一个二叉树的最大距离有两个情况:情况A: 路径经过左子树的最深节点,通过根节点,再到右子树的最深节点。 情况B: 路径不穿过根节点,而是左子树或右子树的最大距离路径,原创 2015-10-16 12:49:39 · 606 阅读 · 0 评论 -
【STL源码剖析】令人困惑的语法
困惑的语法obj * volatile * my_free_list的含义这个声明原来的形式是:obj** my_free_list,这样的话*my_free_list(空闲的内存块指针数组中的一个元素)可能被优化到寄存器中,从而使库代码无法lock住对它的读调用(如果在寄存器中则另一个线程可能会无意中修改该寄存器的值,而在内存中由于另一个线程没有访问权力所以不能修改)。 要声明变量必须在原创 2015-08-02 20:03:32 · 1178 阅读 · 0 评论 -
【STL源码剖析】迭代器
迭代器设计思维迭代器是一种智能指针Traits编程技法原创 2015-08-02 19:43:05 · 354 阅读 · 0 评论 -
【STL源码剖析】关联式容器
setmapmultisetmultimaphashtablehash_sethash_maphash_multisethash_multimap原创 2015-08-02 19:39:20 · 444 阅读 · 0 评论 -
【STL源码剖析】序列式容器
vectorvector是动态增加大小,当已有空间长度无法满足新的插入时的处理方式并不是直接二倍增长。 如果数据插入后的总长度 < 当前空间长度的两倍,则直接申请一块原大小两倍的空间;如果数据插入后的总长度 > 当前空间长度的两倍,则申请总长度大小的空间。然后将原空间的元素拷贝到新的空间,并释放掉。const size_type len = old_size + max(old_size,n)原创 2015-08-02 19:35:25 · 538 阅读 · 0 评论