STL学习心得
文章平均质量分 80
以下是我学习stl的心得,对stl的所有组件进行解析
小白起步
每天都要学到新东西
展开
-
一. 简述
简介对于每一个热爱c++的人来说,STL都是他们日常撸码、高效工作的必定会使用到的标准模板库。STL取用范型的思想,通过模板元编程,去掉了不同型别所带来的差异性,极大的提高了代码的复用性。既然STL如此强大与方便,我们当然要好好的学习它啊。仅仅停留在使用层面是是远远不够的,我们必须深入到代码内部,详细的了解它内部的工作原理。了解他不只是因为我们作为底层开发者不搞懂原理誓不罢休的精神,更是因为要更好的原创 2018-04-23 15:22:41 · 370 阅读 · 0 评论 -
从零开始,打造自己的STL(二、vector)
vector的内存布局以及操作方式与array非常的类似,都是一段连续的内存空间。两者之间唯一的差距就是空间运用的灵活性。array的空间在配置好了之后就无法更改,它所存放的数据量是固定的,一但空间不够用之后需要重新配置一块更大的空间。vector则不然,它的内存空间会随着元素的加入自动扩充新的空间供给使用,这样使用起来就不需要担心空间是否够用了。vector的内存结构vector采用了连续内存空间原创 2018-04-23 15:24:45 · 389 阅读 · 0 评论 -
从零开始,打造自己的STL(三、alloc)
简述在stl中,所有的内存分配与释放都是交由allocator来实现的。在大部分情况下,我们都接触不到这里面的内容,因为它一直是隐藏在幕后悄悄的工作。 当然如果对于内存分配有特殊的要求的话,STL也提供了接口供我们使用自己的分配器 比如在vector的定义上template <typename _Tp, typename _Alloc = alloc > class vector : prote原创 2018-04-23 15:26:24 · 719 阅读 · 0 评论 -
从零开始,打造自己的STL(四、list)
简述在前面我们看了vector的实现之后相信对容器有了一定的认识。容器即为存放物件之所,它代表着一块空间。想要直观的了解一个容器,那么看懂他的空间分配策略是一个非常有效的入手方式。接下来我们就来看看STL中的list又是如何实现的吧。list的结构list就是我们常说的链表,说到链表相信大家就很熟悉了。非连续空间、通过指针来连接每一个小空间、插入和删除都是O(1)操作,元素访问效率较低等等。。。原创 2018-04-23 15:27:49 · 353 阅读 · 0 评论 -
从零开始,打造自己的STL(五、deque)
deque简介deque是双向开口的连续线性空间,支持内部元素的随机访问。看到这个概念,相信大家一定会想起vector,vector是单向开口的连续线性空间,内部元素也是可以随机访问的。deque的元素类似这样那么deque像比于vector的差异在哪里 deque的头部插入是vector没有的,虽然从技术角度来讲,vector实现头部插入也不是很难,但是效率太低,不值得且没必要 除了一些极端情况下原创 2018-04-23 15:29:09 · 256 阅读 · 0 评论