构造与析构-cis_orcad 本地数据库配置方法

时间:2024-06-28 07:12:06
【文件属性】:

文件名称:构造与析构-cis_orcad 本地数据库配置方法

文件大小:5.89MB

文件格式:PDF

更新时间:2024-06-28 07:12:06

数据结构 邓俊辉

§2.3 构造与析构 由代码2.1可见,向量结构可在内部维护一个私有的数组_elem[],其容量由私有变量 _capacity指示,其中有效元素的数量(即向量当前的实际规模)则由_size指示。因此, 向量对象的构造与析构主要围绕这些私有变量和数据区的初始化与销毁展开。 2.3.1 默认构造方法 在面向对象的程序设计语言中,所有对象在可使用之前都需要先被系统创建,这一过程 称作初始化(initialization),向量亦是如此。在C++语言中,对象的创建由构造函数 (constructor)来完成,同一对象的构造函数可能重载有多个。由代码2.1可见,此处向 量的默认构造方法是,首先根据创建者指定的初始容量向系统申请空间,以创建内部私有数 组_elem[];若容量未明确指定,则使用默认值DEFAULT_CAPACITY。接下来,鉴于初生的 向量尚不含任何元素,故将指示规模的变量_size初始化为0。 整个过程顺序进行,没有任何迭代,若忽略用于分配数组空间的时间,共需常数时间。 2.3.2 基于复制的构造方法 向量的另一典型创建方式,是以某个已有的向量或数组(的局部或整体)为蓝本做克隆。 代码2.1中虽为此功能重载了多个版本的接口,但无论是已封装的向量或未封装的数组,无 论是整体还是区间,在入口参数合法的前提下,都可归于如下统一的copyElem()方法: 1 template //元素类型(T为基本类型,戒已重轲赋值操作符'=') 2 void Vector::copyFrom(T* const A, Rank lo, Rank hi) { //基二数组复刢癿极造 3 _elem = new T[_capacity = 2*(hi-lo)]; _size = 0; //分配空间,觃模清零 4 while (lo < hi) //A[lo, hi)内癿元素逐一 5 _elem[_size++] = A[lo++]; //复刢至_elem[0, hi-lo) 6 } 代码2.2 基二复刢癿向量极造器 如代码2.2所示,copyElem()首先根据待复制区间的边界lo和hi,换算出新向量的初 始规模,再以双倍的容量为内部数组_elem[]申请空间。这一策略可保证在此后足够长的一 段时间内,不会因容量不足而导致溢出。随后,通过循环完成区间内各元素的顺次复制。 鉴于共需做线性次复制操作,若忽略为开辟新空间所需的时间,运行时间应正比于复制 区间的长度。若每次赋值仅需常数时间,则总体时间复杂度应为O(hi-lo) = O(_size)。


网友评论