在STL中,容器跟算法是分开设计的,算法是通过迭代器来对容器进行操作的。 在算法运用迭代器的时候,可能会用到其相应的型别,例如返回值为容器中元素的型别,又或者说根据迭代器的类型来选择更好的算法等等。 为了实现这一点,还有为了兼容内置型别的迭代器(vector迭代器直接使用原生pointer),STL ...
分类:
其他好文 时间:
2016-10-23 09:44:02
阅读次数:
212
前言 在STL中,容器的定义中都带一个模板参数,如vector 其中第二个参数就是该容器使用的空间配置器,其中缺省使用STL已经实现的空间配置器(alloc), 该配置器使用malloc/free等为vector分配内存。 缺省的空间配置器 alloc定义了两级的空间配置器,第一级是对malloc/ ...
分类:
其他好文 时间:
2016-10-22 17:11:50
阅读次数:
213
STL有6大组件,阅读《STL源码剖析》后,对于我来说主要收货为:内存分配器、迭代器、仿函数。特别是迭代器章节收货最多,其中重中之重为traits机制的运用。 traits技法——STL的入门钥匙 首先必须清楚模板的参数推导机制,例如: ...
分类:
其他好文 时间:
2016-10-20 14:28:42
阅读次数:
144
本文参考:Google、算法导论、STL源码剖析、计算机程序设计艺术。
推荐阅读:
Left-Leaning Red-Black Trees, Dagstuhl Workshop on Dat...
分类:
其他好文 时间:
2016-08-25 21:50:39
阅读次数:
198
原文:STL"源码"剖析-重点知识总结 STL是C++重要的组件之一,大学时看过《STL源码剖析》这本书,这几天复习了一下,总结出以下LZ认为比较重要的知识点,内容有点略多 :) 1、STL概述 STL提供六大组件,彼此可以组合套用: 容器(Containers):各种数据结构,如:vector、l ...
分类:
其他好文 时间:
2016-07-17 11:44:46
阅读次数:
181
STL是C++重要的组件之一,大学时看过《STL源码剖析》这本书,这几天复习了一下,总结出以下LZ认为比较重要的知识点,内容有点略多 :) 1、STL概述 STL提供六大组件,彼此可以组合套用: 容器(Containers):各种数据结构,如:vector、list、deque、set、map。用来 ...
分类:
其他好文 时间:
2016-07-16 00:09:49
阅读次数:
168
网上有很多对于STL空间配置器源码的剖析,之所以这么多人去剖析空间配置器,我觉得是真的设计的太好,而且剖析空间配置器的架构的设计对于C++学者来说是一个不错的提高能力的项目,所以加入到这个解剖大军中来。
参照了侯捷的《STL源码剖析》,原本直接看源码不懂得东西,突然间豁然开朗。再次写下自己对于STL空间配置器的一点点理解。
要了解空间配置器,有一张图是必看的:
...
分类:
其他好文 时间:
2016-07-15 00:46:45
阅读次数:
238
可以参考侯捷编著的《STL源码剖析》 STL 中的map 与 hash_map的理解 1、STL的map底层是用红黑树存储的,查找时间复杂度是log(n)级别; 2、STL的hash_map底层是用hash表存储的,查询时间复杂度是常数级别; 3、什么时候用map,什么时候用hash_map? 这个 ...
分类:
其他好文 时间:
2016-07-10 18:16:44
阅读次数:
129
STL实现的底层数据结构简介 C++ STL 的实现: 1.vector 底层数据结构为数组 ,支持快速随机访问 2.list 底层数据结构为双向链表,支持快速增删 3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问 ...
分类:
其他好文 时间:
2016-06-20 15:47:40
阅读次数:
134