随笔分类 -  重读STL

摘要:hashtable: hashtable的设计是一个vector数组,每个数组内为一个链表,链表链着hash到同位置的节点,但链表的实现不是list或slist hashtable的节点设计: 1.存储元素值的变量val 2.一个指向下一个节点(同一个bucket内的)的指针next hashtab 阅读全文
posted @ 2019-09-16 09:25 李湘沅 阅读(225) 评论(0) 推荐(0) 编辑
摘要:map与set底层都是调用的RBTree 首先看RBTree RBTree 红黑树的特性: 1.根节点为黑色 2.新增节点一定是红色 3.节点只有红色或黑色两种颜色 4.两个节点颜色不能同为红 5.任意一条路径上的黑色节点个数相同 红黑树的节点设计: 1.表示节点颜色的变量color 2.链接左子树 阅读全文
posted @ 2019-09-16 08:09 李湘沅 阅读(232) 评论(0) 推荐(0) 编辑
摘要:deque deque是一种双向开头的现行连续空间 但它与vector有差异: 1.deque可以在O(1)的复杂度下进行头端插入与移除,而vector的头端操作效率极差 2.deque没有capacity概念。deque随时可以拼接一段新的连续空间。只有像vector这种可能出现空间不足的容器才需 阅读全文
posted @ 2019-09-12 00:45 李湘沅 阅读(369) 评论(0) 推荐(0) 编辑
摘要:list STL list实际上是一个双向链表 正因为如此,其迭代器是一个Bidirectional Iterators 迭代器的插入insert,接合splice以及删除erase都不会导致原有的迭代器(list中的其他迭代器)失效。 迭代器的数据结构: 内部一个成员node;node的类型为Li 阅读全文
posted @ 2019-09-11 23:28 李湘沅 阅读(196) 评论(0) 推荐(0) 编辑
摘要:vector 数据结构: 三个数据成员: iterator start;//指向vector目前使用空间头,即vector.begin() iterator finish;//指向vector目前使用空间尾,即vector.end() iterator end_of_storage;//指向vect 阅读全文
posted @ 2019-09-03 21:06 李湘沅 阅读(215) 评论(0) 推荐(0) 编辑
摘要:首先关于迭代器: 迭代器不属于容器,它与容器属于不同的类,但通过迭代器(迭代器中有某些成员变量;同时也对*等运算符进行了重载),可以访问到容器内的元素(比如list的迭代器,它不属于list,但它里面存放了一个指针,这个指针指向list结构里的成员node,这样就可以借用迭代器去访问容器了。迭代器并 阅读全文
posted @ 2019-08-21 20:59 李湘沅 阅读(191) 评论(0) 推荐(0) 编辑
摘要:为了解决内存碎片的问题,设计了双层级配置器: 第一级直接使用malloc和free配置与释放空间。 第二级采取两种模式:若请求配置区块大于128bytes,则使用第一级配置器的方式;若小于等于128bytes,为了减少内存碎片,使用内存池的方式。 根据_USE_MALLOC定义决定是采取第一级配置器 阅读全文
posted @ 2019-06-20 20:04 李湘沅 阅读(328) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示