7. 假定用一维数组a [ 0:s i z e - 1 ]来存储一组元素。如果有n个元素,可以把它们存储在
a[0],...,a[n-1]中。当n超过size时,数组将不足以存储所有元素,必须分配一个更大的数组。类
似地,如果元素的数目比size小很多,我们又可能希望减少数组的大小,以便释放出多余的空
间为其他地方所用。试编写一个模板函数ChangeSize1D把数组a的大小从size变成ToSize。函数
首先应该分配一个新的、大小为ToSize的数组,然后把原数组a中的n个元素复制到新数组a中,
最后释放原数组a所占用的空间。上机测试该函数。
template< class T >
void ChangeSize1D( T *arrA, int fromSize, int toSize)
{
ASSERT(toSize > 0);
ASSERT(fromSize > 0);
ASSERT(arrA != NULL);
T *newArray = new T[toSize];
int copySize = fromSize > toSize ? toSize : fromSize;
memcpy(newArray, arrA, copySize);
delete []arrA;
arrA = newArray;
}
template< class T >
void ChangeSize1D( T *arrA, int fromSize, int toSize)
{
ASSERT(toSize > 0);
ASSERT(fromSize > 0);
ASSERT(arrA != NULL);
T *newArray = new T[toSize];
int copySize = fromSize > toSize ? toSize : fromSize;
memcpy(newArray, arrA, copySize);
delete []arrA;
arrA = newArray; // 这里这么写,newArray传不出去..
}