C++改变一个一维数组长度
原创
©著作权归作者所有:来自51CTO博客作者wuyi_all_in的原创作品,请联系作者获取转载授权,否则将追究法律责任
注意:
动态数组,只能赋给动态数组,
T* & arr 指针引用
不一定就是往大了改,还有可能往小的改变,取新旧长度的最小值,来确定复制的数量
新的长度需要判断是否大于0
#include <iostream>
#include <cassert>
#include <algorithm>
#define min(a,b) a>b?b:a;
using std:: cin;
using std:: cout;
using std:: endl;
using std:: copy;
//T* & arr 指针引用
template <class T>
void Change_Array_Length(T* & arr,int oldlength,int newlength)
{
//不一定就是往大了改,还有可能往小的改变
assert(newlength > 0);
T *temp = new T[newlength];
int number = min(oldlength, newlength);
//copy在std命名空间下
copy(arr,arr+number,temp);
delete[] arr;
//temp 指向动态数组,则要求arr,也是动态数组
arr = temp;
}
int main()
{
//temp 指向动态数组,则要求传的指针也是动态数组
int *p = new int [8];
for (int i = 0; i < 8; i++)
p[i] = i;
Change_Array_Length(p, 8, 4);
for(int i=0;i<8;)
cout << p[i++] << endl;
return 0;
}