在MFC程序中定义一个动态的二维数组,比如P[i][j],使用carray怎么实现呢?

解决方案 »

  1.   

    CArray 的对象就是一维数组了所以二维数组,只要定义一个CArray数组就OK了CArray<int,int> arr[10];这样就定义了一个
      

  2.   

    用std::vector<std::vector<int> >吧
      

  3.   

      能稍微详细一点吗,比如我想定义一个p[i][j],应该怎么做呢?
      

  4.   


    CArray<int,int> p[i];而你的j  就是 p[0]的元素个数,因为CArray 是可以自动设置大小的,所以 j 的值就可以不用设置了,自己添加个数就OK了,添加完了 用p[0].GetSize()得到p[0]的个数
      

  5.   

    如果想要设置j 的个数可以使用p[i].SetSize(j) 设置 j的值
      

  6.   


    为什么我编译老是同不过呢,提示:
    error LNK2001: unresolved external symbol "class CArray<int,int> * p" (?p@@3PAV?$CArray@HH@@A)
    fatal error LNK1120: 1 unresolved externals
      

  7.   

    CArray <int,int> p[10];p[i-1].SetSize(10);
      

  8.   

      这样改是没问题,可是我的i,j都是不确定的啊,我要创建的数组p[i][j],其中i,j都是未知的
      

  9.   

      另外像下面这样:
    typedef CArray <int,int> DB1;
            typedef CArray <DB1,DB1> DB2;
    DB2 value;
    value[i][j]=1;
            编译没问题,但是运行时就会报错哪位前辈指点下啊。。
      

  10.   


    我使用vector编译能过,运行时还是有问题,程序直接崩溃,代码如下:
    vector<vector<int>   >   vecInt(i,   vector<int>(j)); 
    vecInt[j][i]=i*j;救命啊!!!!!!
      

  11.   

    越界了啊
    char x[10];的时候 x[10]就错误了,只能使用到x[9];
    同理vecInt[j-1][i-1]=i*j;