STL
hj605635529
海阔任鱼跃,天高任鸟飞!!
展开
-
深度剖析空间配置器(二)一二级配置器
空间配置器主要分三个文件实现,我们已经介绍过第一个文件了(对象的构造和析构 http://blog.csdn.net/hj605635529/article/details/70238270),现在我们来介绍第二个文件 stl_alloc.h 也就是空间配置器的精华所在 文件中定义了一、二两级配置器 其设计思想为:向 system heap 要求空间;考虑多线程 (转载 2017-04-19 12:28:49 · 754 阅读 · 0 评论 -
STL之deque容器的剖析
说明:本文仅供学习交流,转载请标明出处,欢迎转载! vector底层采用的是一个数组来实现,list底层采用的是一个环形的双向链表实现,而deque则采用的是两者相结合,所谓结合,并不是两种数据结构的结合,而是某些性能上的结合。我们知道,vector支持随机访问,而list支持常量时间的删除,deque支持的是随机访问以及首尾元素的删除。 deque是double转载 2017-04-15 00:36:21 · 388 阅读 · 0 评论 -
深度剖析空间配置器(一)构造和析构函数
STL空间配置器主要分三个文件实现,首先我们来介绍第一个文件stl_construct.h 这里定义了全局函数construct()和destroy(),负责对象的构造和析构。先介绍构造函数 construct():#include //定位new 的头文件template inline void _Construct(_T1* __p, const _T2& __v原创 2017-04-19 11:38:44 · 479 阅读 · 0 评论 -
STL源码剖析 --vector
vector容器概述 vector的数据安排以及操作方式,与array非常相似。两者的唯一区别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变;要换个大(或小)一点的房子,可以,一切琐细都得由客户端自己来:首先配置一块新空间,然后将元素从旧址一一搬往新址,再把原来的空间释还给系统。vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。因此,原创 2017-04-21 12:29:41 · 401 阅读 · 0 评论 -
深度剖析空间配置器(三)内存处理函数
空间配置器主要分三个文件实现,我们已经介绍过第一个文件了(对象的构造和析构 http://blog.csdn.net/hj605635529/article/details/70238270),第二个(http://blog.csdn.net/hj605635529/article/details/70238728 一二级配置器)现在我们来介绍第三个文件 stl_un原创 2017-04-19 14:18:47 · 369 阅读 · 0 评论 -
STL之list源码剖析
List概述List和Vector都是STL的序列式容器,唯一不同的地方就在于:Vector是一段连续的内存空间,List则是一段不连续的内存空间,相比于Vector来说,List在每次插入和删除的时候,只需要配置或释放一个元素空间,对于任何位置的插入和删除操作,List永远能做到常数时间。但是,List由于不连续的内存空间,导致不支持随机寻址,所以尺有所长寸有所短,在程序中选择使用那原创 2017-06-17 16:43:15 · 363 阅读 · 0 评论 -
STL之deque源码剖析
在介绍STL的deque的容器之前,我们先来总结一下vector和list的优缺点。vector在内存中是分配一段连续的内存空间进行存储,其迭代器采用原生指针即可,因此其支持随机访问和存储,支持下标操作符,节省空间。但是其在分配的内存不够的情况下,需要对容器整体进行重新分配、拷贝和释放等操作,而且在vector中间插入或删除元素效率很低。而list是以节点形式来存放数据,使用的是非连续的内原创 2017-06-17 16:53:22 · 613 阅读 · 0 评论