CString strABC[ElementNum][3];要定义一个如上的多维字符串数组,但是ElementNum要在运行过程中才能得到。请问怎样声明一个个数不确定的多维数组?

解决方案 »

  1.   

    CString (*strABC)[3] = new CString[ElementNum][3];
      

  2.   

    vector<CString,vector<CString > >
    不久可以了吗???
      

  3.   

    如3楼.
    学会用vector deque list 容器简单许多,而且再重新分配时不用费心,释放时也一样.例子:
    #include <deque>
    using namespace std;//<vector>需要这个声明deque <deque <CString> > dTNum;//声明
    ...CPP中:
            dTNum.resize(ihang);
    for (int n=0;n<ihang;n++)//再动态申请一维数组
    {
    dTNum[n].resize(3);
    }以后需要改变维数;直接dTNum.resize(ihang);就可以了
      

  4.   

    这是定义并分配一个指向二维数组的指针。假设把左右两边的[3]都去掉,就是最常见的定义并分配一个指向一维数组的指针。如果需要,也可以在左右两边再增加维度。使用完后别望了delete。
      

  5.   


    借此机会问一下cnzdgs:
    如果是一个结构体数组,也可以这样定义吗?
      

  6.   

    该怎么删除?下面的为什么不对?
                    for(int i=0;i<3;++i)
    {
    delete [] strABC[i];
    }
    delete [] strABC;
      

  7.   

    用delete [] strABC;释放。
    不要delete [] strABC[i];(一个new对应一个delete)to 9楼:可以。
      

  8.   

    用CArray<CString,CString> myStrAy;
      

  9.   

    在内存在运行前不可知的情况下都在堆上分配内存(new)和撤销内存(delete)!