
源码
文章平均质量分 78
一只IT小小鸟
还有很多未完成的梦,怎能停下脚步,加油!
展开
-
STL源码学习系列一: 理论基础(Theory)
STL标准模板库STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。 STL的从广义上讲分为三类: algorithm(算法) container(容器) iterator(迭代器)容器和算法通过迭代器可以进行无缝地连接。几乎所有的...原创 2018-05-21 23:00:03 · 471 阅读 · 0 评论 -
STL源码学习系列二: 空间配置器(Allocator)
STL空间适配器侯捷在《STL源码剖析》一书讲到: 因此我们需要先去学习空间配置器。这是STL学习的第一部分,空间适配器,所谓空间适配器,就是用来管理内存的一个器具。对于STL来说,空间适配器是它可以正常工作的基础,也为它可以高效工作提供了动力。对于使用STL来说,它是不和用户直接打交道的,而是隐藏在一切STL组建之后,默默为各种内存申请提供支持的。 对于c++用户来说,...原创 2018-05-22 23:41:44 · 416 阅读 · 0 评论 -
STL源码学习系列三: 编程技法(Traits)
Traits编程技法前言Traits编程技术是STL中最重要的编程技术,Traits可以获取一个类型的相关信息。在C/C++中可以使用sizeof()来获取变量的大小,但是如果想获取变量的类型,却没有typeof()这样的函数,而Traits编程技法就是为了实现typeof()的功能,这种功能主要可以用于迭代器相应型别的设计上。Traits编程Traits可以获取一...原创 2018-05-23 20:13:19 · 525 阅读 · 0 评论 -
STL源码学习系列四: 迭代器(Iterator)
迭代器(Iterator)前言在STL的思想中,容器和算法是彼此独立设计的,再通过某种方式使它们连接;而迭代器是使算法独立于使用的容器类型,即迭代器是连接算法和容器的方法。由于迭代器是一种行为类似指针的对象,也就说迭代器是一种广义指针,即迭代器对解除引用操作(operator*)和访问成员操作(operator->)进行重载。然而要对这两个操作符进行重载,对容器内部对象的数据...原创 2018-05-23 22:43:39 · 6230 阅读 · 0 评论 -
STL源码学习系列七: 序列式容器( Vector )
序列式容器(Vector)前言在STL编程中,我们最常用到的就是容器,容器可分为序列容器和关联容器;本文记录的是我们经常使用的序列容器之vector,vector的数据安排和操作方式类似于C++内置数组类型array,唯一的区别就是在于空间的灵活运用。内置数组array是静态空间,一旦分配了内存空间就不能改变,而vector容器可以根据用户数据的变化而不断调整内存空间的大小。v...原创 2018-06-04 22:21:38 · 396 阅读 · 0 评论 -
STL源码学习系列五: 内存处理工具(construct,destroy,uninitialized_copy,uninitialized_fill,uninitialized_fill)
内存处理工具–五个全局函数(construct(),destroy(),uninitialized_copy(),uninitialized_fill(),uninitialized_fill)前言在STL中,内存处理时很关键的,特别是对于容器的实现,内存处理相当的重要。为了实现内存配置跟对象的构造行为分离开来,STL定义的五个基本全局函数,这五个全局函数中,贯穿在里面的基本上是T...原创 2018-05-24 17:06:40 · 794 阅读 · 0 评论 -
STL源码学习系列六: 算法(Algorithm)
算法(Algorithm)前言以有限的步骤,解决逻辑或数学上的问题,这一专门科目称为算法(Algorithm)。广而言之,我们所写的每一个程序都是一个算法,其中的每个函数也都是一个算法。当我们发现一个可以解决问题的算法时,下一个重要的步骤就是决定该算法所耗的资源,包括空间时间。STL算法部分主要是由三个头文件承担: algorithm、numeric、functional...原创 2018-05-29 22:30:05 · 1642 阅读 · 0 评论 -
STL源码学习系列八: 序列式容器( List)
序列式容器( List)前言在SGI STL中,list容器是一个循环的双向链表,它的内存空间效率较前文介绍的vector容器高。相对于 vector 的连续线性空间,list 就显得复杂许多,他的好处是每次插入和删除一个元素,就配置和释放一个元素空间。因此,list 对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list 永远是常数时间。与ve...原创 2018-06-13 23:23:22 · 376 阅读 · 0 评论 -
STL源码学习系列九: 序列式容器( Deque)
序列式容器( Deque)概述deque是一种双向开口的分段连续线性空间,可以在头尾端进行元素的插入和删除。 deque与vector最大的差异就是:第一是deque允许于常数时间内对头端进行插入或删除元素;第二是deque是分段连续线性空间,随时可以增加一段新的空间;deque不像vector那样,vector当内存不够时,需重新分配/复制数据/释放原始空间;不过deque...原创 2018-06-16 20:48:00 · 368 阅读 · 0 评论