![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL源码剖析
抖抖认真了
要成为合格的程序员
展开
-
STL中的空间配置器关于free_list的节点的union使用
配置器中free_lists的结构如下:union obj{ union obj* free_list_link; char client_data[1];}因为为了维护链表。每个节点即需要用指针来指向实际区块,同时还要链接着下一个空闲节点。从而每个节点就需要额外的指针来指向下一个空闲节点,这就造成了额外负担。但是在实际赋值时,你只会二选一,要么表示实际区块,要么就表示...原创 2020-02-12 22:25:39 · 715 阅读 · 1 评论 -
STL-----hashtable的原理与实现
hash table 可提供对任何有名项的存取和删除操作。由于操作对象是有名项,所以hash table也可被视为一种字典结构。这种结构的用意在于提供常数时间的基本操作。它将这些有名项存放在桶中,各桶单元在物理上是连续排列的。比如某学校拟建立一个电话簿查询系统,假设该校总共约25000门固定电话,每个电话都是8位的,我们怎么样才能实习将这些固定电话放入桶中,使得查询,插入,删除都是常数时间呢?...原创 2019-11-22 17:24:30 · 471 阅读 · 0 评论 -
SGI STL------------deque的特点
我们都知道在使用deque的时候,它是两端都可插入,取出;并且支持随机取数的一个容器;给人从表面上看起来,好像是一个连续线性空间;其实deque的内部实现上,它是一个分段连续线性空间。deque和Vector的最大差异,一在于deque允许于常数时间内对头端进行元素的插入或移除操作,(这里就是因为分段的原因,它只需要在这一小段进行操作,不像vector是整个区间向后移动);二在于deque没有...原创 2019-10-27 22:02:29 · 188 阅读 · 0 评论 -
STL源码剖析------------Vector和List数据结构的特点
这里,我将分别描述Vector和List的数据结构特点,以及一些函数的操作特点,然后再总结一下二者之间的区别Vector的数据结构特点Vector的数据安排以及操作方式,与array非常相似,二者之间唯一的差别在于空间的运用的灵活性,array是静态空间,一旦配置了就不能改变,要重新换一个大一点的区间,而Vector则在配置空间时预留一定的空闲空间,实现动态扩容。并且这里使用size来...原创 2019-10-21 17:21:03 · 184 阅读 · 0 评论 -
STL源码剖析---------SGI空间配置器
书中说到:delete应该是调用对象的析构函数,然后释放内存;,destory也是调用对象的析构函数,vector的析构函数就是先调用了destory,调用对象类型的析构函数,然后调用deallocate释放内存;书上的解释是只是将delete的操作分开了;先是调用析构函数,然后释放内存;记录一下。STL allocator将new和delete进行了分开操作:内存分配操作由alloc::...原创 2019-10-21 16:12:50 · 141 阅读 · 0 评论