STL源码读书笔记
文章平均质量分 76
本栏目主要对STL源码进行分析,向专家学习相关的编程技巧,内存管理,算法,以及数据结构。
_stark
这个作者很懒,什么都没留下…
展开
-
【STL】类型萃取(TypeTraits)
为什么需要类型萃取前面我们提到了迭代器,它是一个行为类似于smart pointer之类的东西,主要用于对STL容器中的对象进行访问,而且不暴露容器中的内部结构,而迭代器所指对象的型别称为该迭代器的value type;如果在实际的工程当中我们应该怎么获取STL容器中对象的value type 呢,这里面就需要用到C++中模板的特化了,我们先来看看下面的代码:template <class T>v原创 2016-12-18 17:06:08 · 3547 阅读 · 0 评论 -
【STL】迭代器
什么是迭代器迭代器是STL中行为类似指针的设计模式,它可以提供了一种对容器中的对象的访问方法;并且它没有暴露容器中内部的表述方式。 例如STL中的map和set,它们的底层是一颗红黑树(一种平衡树):private: typedef rb_tree<key_type, value_type, select1st<value_type>, key_com原创 2016-12-18 12:34:49 · 957 阅读 · 0 评论 -
【STL】SGI空间配置器(一):一级空间配置器
今天看了STL中的空间配置器,写一篇博客小小的总结一下。 首先STL空间配置器的产生在实际的软件开发中,当我们使用C++中的malloc、new、free和delete时,我们不可避免的会因为程序的需求,使用很多的小内存块,这个过程是不一定能够控制好的,例如下面的场景 而且一直调用malloc和new产生小块内存不光会产生内存碎片,而且系统调用会产生性能问题。内碎片与外碎片内碎片:因原创 2016-12-07 11:49:00 · 1507 阅读 · 0 评论 -
STL::set和mutiset用法浅析
引入前面我们提到了红黑树,这是一种自适应式的二叉树结构,它可以在我们插入节点时根据节点的键值对节点进行排序,从而达到key值有序排列的目的。STL中map、set、mutiset和mutimap底下都是用红黑树实现的。m只是set红黑树的节点中只有键值(key),而map的节点中不光有键值还有实值(value),今天我们就来分析一下set和mutiset这两个关联式容器。set的结构 我们可以看出原创 2016-11-14 18:19:02 · 1998 阅读 · 0 评论 -
【STL】空间配置器(二):二级空间配置器
SGI STL一级空间配置器: http://blog.csdn.net/bit_clearoff/article/details/53503846前面我们已经分析过了SGI STL一级空间配置器的实现以及其中的相关机制,今天我们主要来分析一下空间配置器中的重头戏:二级空间配置器。我们先来用图描述一下二级空间配置器的结构: 上图是二级空间配置器的基本结构是有一块事先分配好内存的内存池和一个给对象原创 2016-12-07 17:23:06 · 1937 阅读 · 0 评论