数组长度的增减

题目:.假定用一维数组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) | 编辑 |删除 |推送 |置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值