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;
}
这样不可以吗?就是说要让结构体的长度随着编译的进行随时改变它的长度。。。。。
该怎么做?
------解决思路----------------------
首先创建一个固定长度的数组
当数组中的元素到达上限后, 再重新创建一个比原数组长度更长的数组
将原数组中的数据复制到新数组中, 删除旧数组, 将新数组指针赋值给旧数组变量

#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>不就行了?