
深度探索STL
本专栏深度剖析STL源码,详解其空间配置器,内存管理,以及几大常用的基本容器,和相关算法。
selfimpr1991
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【深度探索STL】关联式容器map和multimap
map与multimap的区别等同于set 与multiset的区别。一、mapmap原创 2014-08-08 21:59:47 · 3415 阅读 · 0 评论 -
【深度探索STL】关联式容器set和multiset
标准的STL关联式容器分为set(集合)和原创 2014-08-07 21:05:29 · 2789 阅读 · 0 评论 -
【深度探索 STL】【数据结构】详解红黑树(一)结构及插入
红黑树概述历史上 AVL 树流行的另一变种是红黑树()原创 2014-05-31 21:59:18 · 4830 阅读 · 3 评论 -
【深度探索STL】特殊容器 string
体会string 的强大。这里就不同篇介绍string 了,只给出常用部分函数接口的内部实现。在应用string 的时候,只需要包含头文件<iostream> 就行了C++ 标准中string 类的特性与 vector<> 很相似,有以下几点区别:string 总会在末尾存放NULL 字符;string 需要借助 char_traits<>::assign,char_traits<>::copy 和char_traits<>::move 来复制元素,另外string 还额外提供了一些接口函数。stri原创 2014-08-11 21:00:10 · 1398 阅读 · 0 评论 -
【深度探索 STL】hashtable(哈希表)
之前也学习过哈希表原创 2014-06-22 21:47:49 · 4378 阅读 · 0 评论 -
【深度探索STL】详解 list
List 就是链表,这个我们在很久之前就学习过了单向链表,双向链表。之前对STL有过大概的剖析,但没涉及到链表,早几天使用到了STL中的,对其中的有些细节不明了,特意重新阅读了下源码,对STL中的List 加深一下理解。1、List 概述list 和 vector 是两个最常用的容器(序列式容器)。二者最显著的区别自然就是vector是连续线性空间,list则是不连续线性空间,相比于v原创 2015-03-21 14:10:57 · 3865 阅读 · 0 评论 -
【深度探索STL】详解 vector 内部机制
前面初步介绍了序列式容器 vector :初识序列式容器vector,这里试图通过简单剖析源码来了解 vector 的内部机制,参考资料:《STL 源码剖析》(侯捷)原创 2014-02-23 23:59:47 · 6234 阅读 · 2 评论 -
【深度探索STL】详解 traits 编程技法
迭代器是一种抽象的设计概念,定义为:提供一种方法,使之能够依序巡访某个容器所含的各个元素,而又无需暴露该容器的内部表达式。原创 2014-02-26 21:11:58 · 2338 阅读 · 0 评论 -
【深度探索STL】空间配置器(四) 内存基本处理
前面分别学习了:对象的构造和析构 :http://blog.youkuaiyun.com/wenqian1991/article/details/19545049空间配置器之第一级配置器:http://blog.youkuaiyun.com/wenqian1991/article/details/19566499空间配置器之第二级配置器:http://blog.youkuaiyun.com/wenq原创 2014-02-22 16:49:53 · 1817 阅读 · 0 评论 -
【深度探索STL】空间配置器(三) 第二级配置器
考虑到小型区块所可能造成的内存破碎问题,SGI 设计了双层级配置器,第一级配置器参见博文 http://blog.youkuaiyun.com/wenqian1991/article/details/19566499。这里则学习第二级配置器,第二级配置器的设计思想为:如果配置区块超过128 bytes,则移交给第一级配置器处理;如果配置区块小于128 bytes,则采用内存池管理(memory p原创 2014-02-21 20:13:50 · 4075 阅读 · 0 评论 -
【深度探索STL】空间配置器(二) 第一级配置器
了解内存配置后的对象构造行为和内存释放前的对象析构行为后(参见博文:http://blog.youkuaiyun.com/wenqian1991/article/details/19545049 空间配置器--构造与析构),我们再来学习内存的配置与释放(定义在头文件 中)。其设计思想为:向 system heap 要求空间;考虑多线程 (multi-threads) 状态;考虑内存不足时的应变措施;原创 2014-02-21 00:46:06 · 3338 阅读 · 1 评论 -
【深度探索STL】空间配置器(一) 构造和析构
以STL运用的角度而言,空间配置器总是隐藏在一切组件的背后,但就STL 的实现角度而言,我们需要了解空间配置器,因为整个STL 的操作对象(所有数值,“value”语意)都存放在容器之内,而容器一定需要配置空间以置放数据。没必要重复造轮子,但我们知道这轮子背后如何运作,有利于我们更好地驾驭轮子。另一方面通过阅读源码可以学习大神的编程思想。一般而言,我们所习惯的C++ 内存配置操作和释放操作是这原创 2014-02-20 14:59:50 · 3719 阅读 · 0 评论 -
【STL】序列式容器:vector
先简单的说下序列式容器,该类容器是有序群集,其中每个元素均有固定的位置——取决于插入时间和地点,和元素值无关。换言之,就是容器中的元素位置取决于你插入该元素的时间或(和)往哪个位置插入。比如有的容器提供尾端追加元素函数,有的容器还提供向某位置插入某元素。STL 提供三个定义好的序列式容器:vector,deque,list。这里学习vector。vector 将其元素置于一个动态数组中加以管理原创 2014-02-19 20:09:57 · 6973 阅读 · 0 评论