题目:.假定用一维数组a[0:size-1]来存储一组元素。如果有n个元素,可以把它们存储在a[0],...,a[n-1]中。当n超过size时,数组将不足以存储所有元素,必须分配一个更大的数组。类似地,如果元素的数目比size小很多,我们有可能减少数组的大小,以便释放出多余的空间为其他地方所用。试编写一个模板函数ChangeSize1D把数组的大小从size变成ToSize。函数首先应该分配一个新的、大小为ToSize的数组,然后把原数组a中的n个元素复制到新数组a当中,最后释放原数组a所占用的空间。上机测试该函数。
#include<iostream>
using namespace std;
template <class T >
void ChangeSize1D(T* &a,int n, int ToSize)
{
if (n > ToSize)
{
cout << "Bad input!" << endl;
}
T *temp = new T[ToSize];
for (int i = 0; i < n; i++)
{
temp[i] = a[i];
}
delete []a;
a = temp;
}
int main()
{
int *x;
x = new int[4];
for (int i = 0; i < 4; i++)
x[i] = i;
ChangeSize1D(x,4, 10);
for (int i = 4; i < 10; i++)
x[i] = i + 5;
for (int i = 0; i < 10;i++)
cout << x[i] << " ";
return 0;
}
阅读(2)| 评论(0) | 编辑 |删除 |推送 |置