c++中如何用new创建可变长度的结构体数组
c++中怎么用new创建可变长度的结构体数组?
int InNumbers=1; //用于存放输入复数的数量
//选择功能
while(iSelction!=4)
{
ShowMenu();//显示菜单
iSelction=MenuiSelction();//得到输入的菜单序号
switch(iSelction)
{
case 1:
while(iSelction=1)
{
Complex *pArrComplex=new Complex[InNumbers];
Input( pArrComplex,InNumbers);
InNumbers++;
cin>>iSelction;
}
这样不可以吗?就是说要让结构体的长度随着编译的进行随时改变它的长度。。。。。
该怎么做?
------解决思路----------------------
首先创建一个固定长度的数组
当数组中的元素到达上限后, 再重新创建一个比原数组长度更长的数组
将原数组中的数据复制到新数组中, 删除旧数组, 将新数组指针赋值给旧数组变量
------解决思路----------------------
使用vector<T>不就行了?
int InNumbers=1; //用于存放输入复数的数量
//选择功能
while(iSelction!=4)
{
ShowMenu();//显示菜单
iSelction=MenuiSelction();//得到输入的菜单序号
switch(iSelction)
{
case 1:
while(iSelction=1)
{
Complex *pArrComplex=new Complex[InNumbers];
Input( pArrComplex,InNumbers);
InNumbers++;
cin>>iSelction;
}
这样不可以吗?就是说要让结构体的长度随着编译的进行随时改变它的长度。。。。。
该怎么做?
------解决思路----------------------
首先创建一个固定长度的数组
当数组中的元素到达上限后, 再重新创建一个比原数组长度更长的数组
将原数组中的数据复制到新数组中, 删除旧数组, 将新数组指针赋值给旧数组变量
#define MAX_GROWUP 4
template <class T>
T *Growup(T **t, int count, int grow = MAX_GROWUP, int add = 1, int *pncount = NULL)
{
int space = count % grow;
if (space >= add) return *t;
int ncount = ((count + add) + (grow - 1)) / grow * grow;
T *nt = NULL;
try
{
if ((nt = new T[ncount]) == NULL)
return NULL;
}
catch (...)
{
return NULL;
}
memset(nt, 0, sizeof(T) * ncount);
memcpy(nt, *t, sizeof(T) * count);
delete[] (*t);
*t = nt;
if (pncount != NULL)
*pncount = ncount;
return nt;
}
------解决思路----------------------
使用vector<T>不就行了?