stl 学习之路
记录stl的使用方式和内部实现。
LN-Curiosity
这个作者很懒,什么都没留下…
展开
-
c++ stl allocator(具备次配置力sub-allocation)
1.1 alloc(具备次配置力sub-allocation的sgi空间配置器)sgi stl的每一个容器都已经指定其缺省的空间配置器为alloc。例如:template<class T,class Alloc = alloc>class vector{ ... };1.2 sgi特殊的空间配置器std::alloc内存配置操作由alloc:原创 2019-01-25 20:52:29 · 788 阅读 · 1 评论 -
c++ stl 内存基本处理工具(与construct()、destroy()并列)
from <stl_uninitialized>1.1 uninitialized_copy()template <class InputIterator, class ForwardIterator>ForwardIterator uninitialized_copy(InputIterator first, InputIterator last, ForwardI...原创 2019-02-18 17:57:23 · 1872 阅读 · 0 评论 -
c++ stl 迭代器iterators(traits编程技法)
文章目录1.1 迭代器设计思维-stl关键所在1.2 迭代器是一种smart pointer1.3 迭代器相应型别(associated types)1.4 traits编程技法-stl源代码门匙1.4.1 value type1.4.2 different type1.4.3 reference type1.4.4 pointer type1.4.5 iterator_category1.5 s...原创 2019-02-10 15:30:15 · 1238 阅读 · 0 评论 -
c++ stl vector(针对扩充空间策略)
1.vector vector的数据安排以及操作方式,与array非常相似,两者的唯一差别在于空间的运用的灵活性。vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。因此,vector的运用对内存的合理利用与运用的灵活性有很大的帮助。vector的实现技术,关键在于对其大小的控制以及重新配置时的数据移动效率。2.函数成员2.1构造函数:/// Cre...原创 2018-01-04 17:29:08 · 2385 阅读 · 1 评论 -
c++ stl list(环状双向链表)
1.list 相较于vector的连续线性空间,list就显得复杂很多,它的好处是每次插入或删除一个元素,就配置或释放一个元素的空间。因此,list对空间的运用有绝对的精确,一点也不浪费。而且,对于任何位置的元素插入和元素移除,list永远是常数时间。 list的节点结构:template <class T>struct __list_node{ type...原创 2018-01-09 10:32:36 · 5322 阅读 · 0 评论 -
c++ stl deque(双向开口的分段连续线性空间)
1.deque vector是单向开口的连续线性空间,deque则是一种双向开口的连续线性空间。所谓双向开口,意思是可以在头尾两端分别做元素的插入和删除操作。vector当然也可以在头尾两端进行操作,但是其头部操作效率奇差,无法被接受。 deque和vector的最大差异,一在于deque允许于常数时间内对起头端进行元素的插入或移除操作,二在于deque没有所谓容量capacity...原创 2018-01-27 20:48:03 · 753 阅读 · 0 评论 -
c++ stl stack(FILO,容器配接器)
1.stack stack是一种先进后出的数据结构,它只有一个出口。stack允许新增元素、移除元素、取得最顶元素。但除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之,stack不允许有遍历行为。 以某种既有容器作为底层结构,将其接口改变,使之符合“先进后出”的特性,形成一个stack,是很容易做到的。deque是双向开口的数据结构,若以deque为底部结构并封...原创 2018-01-29 10:32:48 · 449 阅读 · 0 评论 -
c++ stl queue(FIFO,容器配接器)
1.queue queue是一种先进先出的数据结构,它有两个出口。queue允许新增元素、移除元素、从最底端加入元素、取得最顶端元素。但除了最底端可以加入、最顶端可以取出外,没有任何其他方法可以存取queue的其它元素。换言之,queue不允许有遍历行为。 将元素推入queue的操作称为push,将元素推出queue的操作称为pop。 以某种既有容器为底部结构,将其接口改变...原创 2018-02-05 10:08:22 · 2293 阅读 · 0 评论 -
c++ stl map
1.map2.实例原创 2017-07-31 17:09:06 · 356 阅读 · 0 评论