出发动态数组V2.0[VC/C++编程]
本文“出发动态数组V2.0[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
简介
大量数据的管理是很多程序员的心病,很难找到一个速度快、效率高、支持超大规模数据的表,在1.0版本的底子上,出发花血本写下了这个强化了数据插入与删除的改正版,出发动态数组是一个功效强盛的列表形数据管理链表,操纵它可以轻松实现超大数据量的随机插入、删除、改正等操作,它别的一个特点就是速度极快,内存操纵率高.
大量数据的管理必定需求占用大量的内存空间,假如这些数据占用的空间大小是随各种条件改变的,我们就不能利用数组来管理这些数据了(原理就不多说了),这时我们需求一个动态数组.MFC供应了一个很好的动态数组类CArray,关于少量数据,利用CArray就充足好用了,但是关于大量数据(10W级)它就力不从心了,因为它的本质就是一个数组,只不过对常用的插入、删除等操作举行了一个复杂的包装.为了办理这个问题,出发动态数组创始性地将链表与数组巧妙的结合起来,既有数组的高速随机索引的长处,又有链表的数据量机动多变的特点.
工作原理
出发动态数组的数据构造如图(这是1.0版本的表示图,2.0版在结点中增添了一个指导当前数据段中已经利用的空间变量).为了办理大量数据的动态存储问题,出发动态数组将数据分段存放在链表的节点中,每一段可以保存一定数目的数据,假如数据量增添,则在内存中分配一个新数据段,假如数据削减则释放闲暇的数据段,从而有效地办理了该问题.相关于1.0版,2.0版中引入了每个结点中已利用空间用和总闲暇空间两个变量,经过这个处理,在举行数据的插入删除时就不再需求对整个数组中的数据举行移动而只需求对目标数据段做一个简单的处理.
插入数据
假如目标数据段有闲暇位置,那么只需求将该段举行曲整理并插入数据;假如目标段没有闲暇空间,出发动态数据自动在内存中申请一段新的数据,并将该数据段链接到链表中.
删除数据
找到目标段后,从目标数据段中删除目标数据,假如目标段中只包含目标数据,出发动态数组自动删除目标段,并保护好链表的完好性.
增添数据
查抄最后一个数据段,假若有空间就不再分配,没有就申请订报的数据段.
以上是“出发动态数组V2.0[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |