我想建立一个动态二维数组,大小未知,应满足如下情况:
a[0,0],...,a[0,x1]
a[1,0],...,a[1,x2]
..................
a[n,0],...,a[n,xn]
其中n,x1,x2,...,均应根据程序运行情况自动产生。
具体该怎么做?望高手指点,最好给出代码!

解决方案 »

  1.   

    用一维模拟吧
    其实所谓的多维数组,只不过是寻址时候编译器自动给你加了一个偏移量而已比如
    int *a;
    int b[X][N];a=new int[X*N];那么*(a+x*N+m)跟b[x][n]是等价的调用
      

  2.   

    很多人问过:其中一贴
    http://community.csdn.net/Expert/topic/3027/3027144.xml?temp=.7219355
      

  3.   

    申请
    int **a= (int **)malloc(sizeof(int *) *X);
    for(int i=0;i<X;i++)
       a[i]=(int *)malloc(sizeof(int)*N);
    释放
    for(int i=0;i<X;i++)
       free(a[i]);
    free(a);
      

  4.   

    如上用int **a = new A[m];
         for()
         a[i] = new A[n];
     
    或用vector < vector<> >
      

  5.   


    new a[n][x]
    其中n、x用参数传递就可以了
    用完了记得用
    delete[]
    释放掉内存就可以了
      

  6.   

    VC知识库 http://www.vckbase.com/document/viewdoc/?id=844
    csdn http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=204998
    http://www.china-askpro.com/msg25/qa74.shtml
      

  7.   

    a[0,0],...,a[0,x1]
    a[1,0],...,a[1,x2]
    ..................
    a[n,0],...,a[n,xn]
    其中n,x1,x2,...,均应根据程序运行情况自动产生。int x[n] = {x1,x2,x3,x4,......,xn};
    int **a;
    a = new int*[n];
    for(int i;i<n;i++)
         a[i] = new int[x[i]];
      

  8.   

    用vector < vector<> >吧,二维很好用,产生一个数就加到最后就行了,系统会自动扩充vector长度的,具体使用看这吧
    http://www.loveunix.net/bbs/index.php?showtopic=36529