![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL源码解析
yao_hust_iAC
这个作者很懒,什么都没留下…
展开
-
《STL源码解析》读书笔记之allocator(1)
1.具有sub-allocation的SGI内存配置器 内存配置器allocator是stl中的一个模板类,它提供类型化的内存分配以及释放操作。SGI STL的配置器与众不同,其名称是alloc而非allocator,而且不接受任何参数(如vector)。每个SGI STL容器采用的默认内存配置其都是alloc而不是allocator。 首先介绍a原创 2015-02-03 22:27:34 · 680 阅读 · 0 评论 -
《STL源码解析》读书笔记之序列式容器(1)
1.vector vector的数据安排以及操作方式与array非常相似,两者的唯一差别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能再改变。vector是动态空间,随着元素的加入它的内部机制会自行扩充空间以容纳新元素。 (1)vector的迭代器 因为vector维护的是一个连续线性空间,所以无论其元素型别为何,普通指针都可以作为vector的迭代器。因原创 2015-03-05 16:46:24 · 642 阅读 · 0 评论 -
《STL源码剖析》读书笔记之序列式容器(3)
1.heap heap不属于STL容器组件,它是priority queue的底层实现机制。 (1)push_heap算法 向堆中加入元素,首先将要加入的元素放到堆所在数组的末端,然后再对这个元素进行上溯操作,直到新堆合法为止。如下图所示: (2)pop_heap算法 pop_heap操作取走堆中的最大(小)值。根据堆的特性,堆的最大(小)值必定是堆所存原创 2015-03-06 16:30:42 · 539 阅读 · 0 评论 -
《STL源码解析》读书笔记之序列式容器(2)
1.deque deque和vector的最大差异在于deque允许在常数时间内对首端进行元素的插入和删除操作。而且deque没有容量的观念,因为它是动态地以分段连续空间组合而成的,随时可以增加一段新的空间并链接起来。像vector那样因旧空间不足而重新配置一块更大空间的情况在deque里是不会发生的。虽然deque也提供Random Access Iterator,但它的迭代器并不是原创 2015-03-06 11:35:48 · 538 阅读 · 0 评论 -
《STL源码剖析》读书笔记之关联式容器(1)
1.AVL树 AVL tree是指任何节点的左右子树高度相差最多1的二叉搜索树。任何节点左右子树高度最多相差1能够保证AVL树具有“对数深度”的平衡状态。在对AVL tree进行插入操作时,可能造成树平衡被破坏。根据新结点插入位置的不同,可以将平衡的破坏分成四种情况:左左,左右,右左,右右。其中左左和右右被称为外侧插入,可以采用单旋转操作调制解决。而左右和右左则称为内侧插入,可以采用双原创 2015-03-13 09:55:56 · 647 阅读 · 0 评论 -
《STL源码剖析》读书笔记之关联式容器(2)
1.hashtable 二叉搜索树具有对数平均时间的表现,但这样的表现构造在一个假设上:输入数据有足够的随机性。而hashtable在插入、删除、搜寻等操作上也具有“常数平均时间的表现”,而且这种表现是以统计为基础的,不依赖于输入的随机性。 一个简单的hashtable的例子: 如果元素是32bits而不是16bits,我们要准备的array就必须是4GB的原创 2015-03-13 16:06:15 · 606 阅读 · 0 评论