
STL
文章平均质量分 88
iotflh
不忘初心,方得始终
初心易得,始终难守
展开
-
STL源码剖析(五)——关联式容器
1、概览所谓关联式容器,观念上类似于关联式数据库,每笔数据都有一个键值(key)和实值(value),当元素被插入到关联式容器中,容器内部结构(可能是红黑树和哈希表)便依照键值大小,以某种特定规则将这个元素放置在适当位置,关联式容器没有所谓头尾(只有最大元素和最小元素)。1.1、树由节点(nodes)和边(edges)组成,最上方的是根节点(root),每个节点具有方向性的边(diercted edges),用来和其他节点相连。无子节点的称为叶节点,如果最多允许存在两个子节点,即所谓二叉树(binar原创 2021-03-16 20:20:32 · 273 阅读 · 0 评论 -
《STL源码剖析》(四)——序列式容器
1、序列式容器所谓序列式容器,其中的元素都可序,但未必有序,C++本身提供了一个序列式容器array,STL另外提供了vector、list、deque、stack、queue、priority-queue等序列式容器,其中stack和queue由于只是将deque改头换面,技术上归类为一种配接器(adapater)。2、vector2.1vecor的数据结构数组2.2vector和array的区别1、vector是动态空间,随着元素增加,它的内部机制会自行扩充以容纳新的元素。2、array是原创 2021-03-14 21:33:31 · 329 阅读 · 0 评论 -
《STL源码剖析》(三)——迭代器与traits编程
1、迭代器STL编程中,容器和算法相互独立,容器里面是数据,算法提供对数据的操作,在算法操作的过程中,要用到迭代器,迭代器可以看作是容器和算法的桥梁。2、迭代器设计模式在设计模式中,有专门的迭代器模式。描述如下:一种能够顺序访问问题中每个元素的方法,使用该方法不能暴露内部的表达方式。在STL编程结构中,迭代器是一种模板class,迭代器在STL中得到广泛的应用,通过迭代器,容器和算法可以有机的绑定在一起,只要对算法给予不同的迭代器,比如vectot::iterator、list::iterator原创 2021-03-14 10:42:04 · 251 阅读 · 0 评论 -
《STL源码剖析》(二)——空间配置器
一、 为什么要有空间配置器:1、小块内存带来的内存碎片问题单从内存分配的角度来讲,由于频繁分配、释放小块内存容易在堆中造成外碎片(极端情况下:堆中空闲的总量满足一个要求,但是这些空闲的块都不连续,导致任何一个单独的空闲的块都无法满足请求)2、小块内存频繁申请释放带来的性能问题:(1)开辟空间的时候,分配器会找一块空闲给用户,找空闲块需要时间,尤其是在外碎片比较多的情况。如果分配器找不到,就要考虑假碎片现象(释放的小块内存没有合并),这时候就要将这些已经释放的空闲块合并,这也需要时间。(2)mall原创 2021-03-13 14:18:14 · 255 阅读 · 0 评论 -
《STL源码剖析》(一)——总纲
1、STL六大部件容器(Containers)分配器(Allocators)算法(Alogrithms)迭代器(Iterators)适配器(Adapters)仿函式(Functors)2、容器是前闭后开的区间[ ) c.begin()指向第0个元素 c.end()指向最后一个元素的后一个3、容器结构分类(1)序列型容器Array(c++ 11)VectorDequeListForward_List(C++ 11)(2) 关联型容器SetMultisetMapM原创 2021-03-11 22:40:37 · 149 阅读 · 0 评论