map
--------------------------------------------------------------------------------
所有元素都会根据元素的键值自动被排序。
map的所有元素都是 pair,同时拥有实值和键值。
不可以修改元素的键值,因为它关系到 map 元素的排列规则
可以修改元素的实值,因为它不影响 map 的排列规则
map iterator 既不是一种 constant iterators , 也不是一种 mutable iterator
标准 ...
分类:
其他好文 时间:
2014-07-22 22:34:34
阅读次数:
312
set相关算法
------------------------------------------------------------------------------------
描述:
set_union , set_difference , set_intersection , set_symmetric_difference 算法接受的 set ,
必须是有序区间,适用于以 RB-tree 为底层的 set/multiset , 不适用于以 hash 为底层的 hash_set/hash_mul...
分类:
其他好文 时间:
2014-07-22 22:34:33
阅读次数:
214
RB-tree(红黑树)
--------------------------------------------------------------------------
平衡二叉搜索树 --> 平衡可提高搜索效率
常见的平衡二叉搜索树有:
AVL-tree(任何节点的左右子树高度相差最多 1)、红黑树、AA-tree
AVL-tree
破坏平衡的情况及恢复平衡的方法
恢复时要先找到失去平衡的点
外侧插入 --> 单旋转
内侧插入 --> 双旋转
图5-10
图5-11
图5-12
红黑树是...
分类:
其他好文 时间:
2014-07-22 22:34:33
阅读次数:
316
set
------------------------------------------------------------------------
所有元素都会根据元素的键值自动被排序。
不可以通过 set 的迭代器改变 set 的元素值。因为 set 元素值就是其键值,关系到 set 元素的排列规则。
set::iterator 被定义为底层 RB-tree 的 const_iterator,杜绝写入操作
标准的 STL set 以 RB-tree 为底层机制,就像 stack 以 dequ...
分类:
其他好文 时间:
2014-07-22 22:34:33
阅读次数:
231
heap
-------------------------------------------------------------------------
binary heap 是一种完全二叉树。
隐式表示法:以 array 表述 tree。
小技巧:将 array 的 #0 元素保留,则第 i 个元素的左右子节点分别是 2i 和 2i + 1,
父节点是i/2 --> STL 里没有采用这种小技巧
将 array 无法动态改变大小,所以用 vector 替代 array
这个文件里提供了各种堆操作的...
分类:
其他好文 时间:
2014-07-22 00:32:34
阅读次数:
256
deque
------------------------------------------------------------------------
??一直看不懂 operator->() ,不明白它为什么不用接受参数,直接 return &(operator*())
好像我们用迭代器的时候也不没怎么用到这个函数,甚至我都不会用
1.概述
vector 是单向开口的连续线性空间,deque 则是一种双向开口的连续线性空间
允许常数时间内对起头端进行元素的插入和移除操作
没有容量概念,因为它是动...
分类:
其他好文 时间:
2014-07-22 00:32:34
阅读次数:
225
queue
----------------------------------------------------------------------
stack 是一种配接器(adapter),以某种容器作为底部结构,改变其接口,使之符合"先进先出"的特性。
SGI STL 默认以 deque 为 stack 底部结构
没有遍历行为,没有遍历器
示例:
#include
#include
#include
#include
...
分类:
其他好文 时间:
2014-07-22 00:30:38
阅读次数:
230
stack
-------------------------------------------------------------
stack 是一种配接器(adapter),以某种容器作为底部结构,改变其接口,使之符合"先进后出"的特性。
SGI STL 默认以 deque 为 stack 底部结构
没有遍历行为,没有遍历器
示例:
#include
#include
#include
#include
using names...
分类:
其他好文 时间:
2014-07-22 00:28:39
阅读次数:
212
list
----------------------------------------------------------------------
??为什么很多在算法库里有的算法还要在类的成员函数里重新实现一遍?
-->1.因为算法库里的是通用的,对于具体的类来说效率不高。
比如说 reverse 如果直接用 stl_algo.h 里的 reverse,会再调用 iter_swap,
而 iter_swap 的实现方法是借用临时变量来交换两个迭代器指向的元素,这样会调用
好几次构造函数、拷贝方法、析构...
分类:
其他好文 时间:
2014-07-22 00:27:35
阅读次数:
357
pre_permutation
----------------------------------------------------------------
描述: 取得 [first, last) 所标示之序列的前一个排列组合。如果没有,返回 false,有,返回true
思路:
从后往前
1.找两个相邻元素,令左端的元素为*i,右端的元素为*ii,且满足 *i > *ii
2.找出第一个小于 *i 的元素,令其为 *j,将*i,*j元素对调
3.将ii右端的所有元素颠倒
template <cl...
分类:
其他好文 时间:
2014-07-20 23:07:55
阅读次数:
286