stl源码剖析
earlene_wyl
这个作者很懒,什么都没留下…
展开
-
stl源码剖析(3)迭代器和traits
迭代器 STL的中心思想是:将数据容器和算法分隔开,彼此独立设计,最后再用黏合剂将它们撮合在一起。容器和算法的泛型化,可以用C++的class template和function template来实现,而二者的黏合剂就是迭代器了。 STL将迭代器的实现交给了容器,每种容器都会以嵌套的方式在内部定义专属的迭代器。各种迭代器的接口相同,内部实现却不相同。 迭代器实际上就是一个封装了指针的类模板...原创 2019-05-14 00:55:39 · 178 阅读 · 0 评论 -
stl源码剖析(2)空间配置器
空间配置器 这里在STL中说的空间配置器更多的是指内存的申请和释放。在STL中,一般拥有两级空间配置器,其中第一级配置器更像我们传统意义上的申请;而第二级配置器是一个池,一般称为内存池。 这里对空间配置器进行一个简短的综述,空间配置器管理存储资源的申请和释放的策略是当申请的资源较大时,这里说的较大时大于128BYTES时,调用第一级配置器,采用malloc和fre...原创 2019-05-12 21:54:17 · 214 阅读 · 0 评论 -
stl源1码剖析(4)顺序容器
总览 还有3个适配器stackqueuepriority_queue vector 维护的是一个连续线性空间,对于gnu2.9来说,有3个数据成员start,finish,end_of_storage,都是普通指针,分别指向开头、尾后、和实际可容纳最后一个元素+1的位置,push_back函数就是首先检查是否还有备用空间,如果有就直接在备用空间上构造函数,并调整fin...原创 2019-06-22 21:53:44 · 163 阅读 · 0 评论 -
stl源码剖析(5)关联容器
关联容器 有序集合: map、set、multiset以及multimap (其中multiXXX表示关键字可重复出现) 无序集合: unordered_map、unordered_set、unordered_multiset以及unordered_multimap 二者区别在于,有序集合是使用红黑树来实现的,而无序集合是使用哈希表来实现的。 PS:有序容器是使用比较函数来比较关键字的...原创 2019-08-24 21:53:39 · 188 阅读 · 0 评论