![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL
zhanhuai1
这个作者很懒,什么都没留下…
展开
-
vector
vector维护的是一个连续线性空间,所以不论元素型别为何,普通指针也都可以作为vector的迭代器来支持所需要的操作,如operator*, operator->, operator++, operator--, operator+, operator-, operator+=, operator-=。 如果客户端写出这样的代码:vector::iterator ivite;vec转载 2011-11-11 00:50:44 · 524 阅读 · 0 评论 -
hashtable
二叉搜索树具有对数平均时间的表现,但这样的表现还建立在一个假设上:输入数据足够随机。 hashtable(散列表)的数据结构在插入、删除、搜索等操作上具有“常数平均时间”的表现,而且这种表现以统计为基础,不需要依赖输入元素的随机性。 简单的说,hashtable就像是用一个array来作为容器,把要存储的数据value编码成数字i,然后把value保存到array[i]的位置,以后要搜转载 2011-11-16 01:09:21 · 5233 阅读 · 0 评论 -
heap(堆)
heap不属于STL容器组件,它作为一种底层机制,可以对vector、list等容器进行操作,使其符合“堆”的特性:允许用户以任何次序将任何元素推入容器,但取出时一定是从优先权最高的元素开始取。 所谓binary heap相当于一种完全二叉树,整棵树除了底层的叶节点之外,都是填满的,而最底层的叶节点由左到右不得有空隙。由于整棵树没有任何节点漏洞,带来一个极大的好处:可以使用array来储存所转载 2011-11-13 13:25:28 · 737 阅读 · 0 评论 -
list
list不能像vector那样以普通指针作为迭代器,因为其节点不保证在储存空间中连续存在。因为要保证迭代器能进行operator++, operator--,所以STL list是一个双向链表。 list比vector好的地方在于,插入操作(insert)和接合操作(splice)都不会使原有的迭代器失效。(上一篇介绍过,vector会在扩充空间时使得原有迭代器失效)。但是删除操作(er转载 2011-11-12 00:50:39 · 462 阅读 · 0 评论 -
tree, RB-tree(红黑树)
二叉树的意思是:任何节点最多只能有两个子节点的树。 二叉搜索树可提供log(N)的元素插入和访问,它的节点旋转规则是:任何节点的键值一定大于其左子节点树中的每个节点的键值,并小于其右子树中的每个节点的键值。因此,从树节点一直往左走到底,即得最小元素;从根节点一直往右走到底,却得最大元素。 但是,由于插入值无规律,二叉搜索树可能失去平衡,造成搜索效率低落的情况。解决办法就是尽量使树形左右转载 2011-11-14 00:45:23 · 8752 阅读 · 0 评论