
STL源码剖析
文章平均质量分 85
ZH_learningblog
To be best me!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
STL源码剖析之空间配置器Allocator
Object a = new Object();delete a; 一般地,对象的构造过程包含两步:(1)调用运算符new进行空间分配;(2)调用构造函数构造对象内容。对象的析构函数也包含两步:(1)调用对象的析构函数;(2)调用运算符delete释放内存。 STL中内存操作由alloc:allocate()完成,它是对运算符new的封装,内存释放由alloc:deallo原创 2017-02-28 19:29:00 · 570 阅读 · 0 评论 -
STL源码剖析之迭代器Iterator
在设计模式中,迭代器的定义如下:提供一种方法能够依次访问聚合元素而又无需暴露内部的表达方式。由于STL标准库中的设计将容器与算法相互分隔开,迭代器扮演之间的粘合剂。一、设计原理STL中迭代器为智能指针(smart pointer),指针具有的行为有->和*,因此迭代器会重载operator->和operator*。STL中有个auto_ptr原生指针可供参考学习。二、auto_ptr原创 2017-03-01 16:43:05 · 493 阅读 · 0 评论 -
STL源码剖析之序列式容器vector
一、定义vector底层是动态分配的数组,随着元素的增加,内部机制会自动扩充空间以容纳新的元素。原创 2017-03-01 20:29:09 · 526 阅读 · 0 评论 -
STL源码剖析之数值算法<numeric.h>
一、accumulate作用:初始化init,对区间[first,last)的迭代器i执行init += *i或init = binaryop(init,*i)。 template //版本1,用来计算init和[first,last)区间元素的总和_Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp __in原创 2017-03-08 15:41:04 · 544 阅读 · 0 评论 -
STL源码剖析之基本算法<stl_algobase.h>
一、equal作用:判断[first,last)区间两个元素是否相同,第二个迭代器多出来的元素不予考虑。template //版本1inline bool equal(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2) { for ( ; __first1 != __la原创 2017-03-08 15:48:38 · 502 阅读 · 0 评论 -
STL源码剖析之序列容器deque
一、定义deque是两端都可以插入删除的线性表。图示:deque与vector的区别:(1)deque两端都可已插入删除,vector只在尾端插入删除;(2)deque没有容量的概念,它是由分段连续空间组成的,随时可以增加一个新的空间并连接起来,vector为连续的内存可增长的地址空间。二、deque数据结构deque采用一小段的map作为主控,每个元素都是一个原创 2017-03-02 20:03:58 · 486 阅读 · 0 评论 -
STL源码剖析之序列容器list
一、定义容器list的特点是每次插入一个元素就配置一个空间,每次删除一个元素就释放一个空间。结构定义如下:struct _List_node_base { _List_node_base* _M_next;//后继指针 _List_node_base* _M_prev;//前驱指针};template struct _List_node : public _List_nod原创 2017-03-02 18:36:45 · 390 阅读 · 0 评论 -
STL源码剖析之traits编程技巧
在迭代器中,不同数据结构都有其专属的迭代器,不同的迭代器具有不同属性,算法根据迭代器的不同属性自动的选择执行,这其中技术由traits编程技术完成的,它是通过“内嵌类型”与C++template参数推导功能,解决C++类型识别问题。迭代器所指向对象的型别成为迭代器的value_type。//内嵌型别处理templateclass Iterator{public: typede原创 2017-03-01 19:04:45 · 459 阅读 · 0 评论