[bo]参考答案:[/bo]
#include <iostream>
using namespace std;
template<class T>
void ChangeSize1D(T* &a,int size,int ToSize)
{
if(size==ToSize) return;
T* b=new T[ToSize];
if(size<ToSize)
{
for(int i=0;i<size;i++)
b[i]=a[i];
}
else
{
for(int i=0;i<ToSize;i++)
b[i]=a[i];
}
delete [] a;
a=b;
}
int main()
{
int* a=new int[4];
a[0]=1;
a[1]=2;
a[2]=3;
a[3]=4;
try
{
ChangeSize1D(a,4,5);
}
catch(const char* s)
{
cout<<s<<endl;
return 1;
}
a[4]='x';
cout<<"a[4]="<<a[4]<<endl;
cout<<"a[3]="<<a[3]<<endl<<endl;
try
{
ChangeSize1D(a,5,2);
}
catch(const char* s)
{
cout<<s<<endl;
return 1;
}
cout<<"a[2]="<<a[2]<<endl;
cout<<"a[1]="<<a[1]<<endl<<endl;
return 0;
}
/**************************************************************
运行结果:
a[4]=120
a[3]=4
a[2]=-33686019
a[1]=2
Press any key to continue
**************************************************************/
[bo]说明:[/bo]
这样的数组只能通过指针来创建和删除
……
值得注意的是,数组的大小需要用户来记住
……
[[it] 本帖最后由 linren 于 2008-7-9 19:26 编辑 [/it]]