构造函数:
// 构造函数
Vector(int c = DEFAULT_CAPACITY, int s = 0, T v = 0) //容量为c、规模为s、所有元素初始为v
{ _elem = new T[_capacity = c]; for (_size = 0; _size < s; _elem[_size++] = v); } //s <= c
复制构造函数:
从A数组中为[lo,hi)的左闭右开区间复制数据到vector对象:
template <typename T> //元素类型
void Vector<T>::copyFrom(T const* A, Rank lo, Rank hi) { //以数组区间A[lo, hi)为蓝本复制向量
_elem = new T[_capacity = 2 * (hi - lo)]; _size = 0; //分配空间,规模清零
while (lo < hi) //A[lo, hi)内的元素逐一
_elem[_size++] = A[lo++]; //复制至_elem[0, hi - lo)
}
复制构造函数的几种重载方式:
复制数组A中某一段区间数据到对象
Vector(T const * A, Rank lo, Rank hi) { copyFrom(A, lo, hi); } //数组区间复制
复制数组A中从0到n的区间数据到对象
Vector(T const * A, Rank n) { copyFrom(A, 0, n); } //数组整体复制
复制vector中区间为[lo,hi)的数据到Vector对象
Vector(Vector<T> const & V, Rank lo, Rank hi) { copyFrom(V._elem, lo, hi); } //向量区间复制
赋值vector中从0开始的整片数据
Vector(Vector<T> const & V) { copyFrom(V._elem, 0, V._size); } //向量整体复制
析构函数
// 析构函数
~Vector() { delete [] _elem; } //释放内部空间