这两天怎么这么多关于二维数组的!!!!!!!难道都在做毕设?
自己写一个CMatrix不就全解决了?

解决方案 »

  1.   

    一直是我了 joke100给我写了一个 能用 就是用起来不太方便 我想要个方便点的
      

  2.   

    这个呢。//NXArray.hpp//////////////////////////////////////
    // File Name:NxArray.hpp
    //////////////////////////////////////#ifndef _NX_ARRAY_
    #define _NX_ARRAY_#define DIM(d) (sizeof(d)/sizeof(int))template <class ARRAY_TYPE>
    class TNxArray
    {
    public:
    TNxArray(int nDimension,int *pDimension);
    ~TNxArray();
    int GetSize();
    const int *GetDimension(int &nDimension);
    ARRAY_TYPE &operator()(int d0,...);

    protected:
    ARRAY_TYPE *m_pData;
    int m_nSize;
    int m_nDimension;
    int *m_pDimension;};///////////////////////////////////////////////////////////////
    // Impletation of template TNxArray
    ///////////////////////////////////////////////////////////////#include <stdarg.h>template <class ARRAY_TYPE>
    TNxArray<ARRAY_TYPE>::TNxArray(int nDimension,int *pDimension)
    {
    m_nDimension=nDimension;
    m_pDimension=new int[m_nDimension+1];
    m_pDimension[m_nDimension]=1;
    m_nSize=1;
    for(int i=0;i<m_nDimension;i++)
    {
    m_pDimension[i]=pDimension[i];
    m_nSize*=m_pDimension[i];
    }
    m_pData=new ARRAY_TYPE[m_nSize];
    for(int i=0;i<m_nSize;i++)
    m_pData[i]=0;
    }template <class ARRAY_TYPE>
    TNxArray<ARRAY_TYPE>::~TNxArray()
    {
    delete [] m_pDimension;
    delete [] m_pData;
    }template <class ARRAY_TYPE>
    ARRAY_TYPE &TNxArray<ARRAY_TYPE>::operator()(int d0,...)
    {
    va_list ArrayFooter;
    int nIndex=0,nSubIndex=1,i;
    int *d=new int[m_nDimension];
    d[0]=d0;
    va_start(ArrayFooter,d0);
    for(i=1;i<m_nDimension;i++)
    d[i]=va_arg(ArrayFooter,int);
    va_end(ArrayFooter);
    for(i=m_nDimension-1;i>=0;i--)
    {
    nSubIndex*=m_pDimension[i+1];
    nIndex+=d[i]*nSubIndex;
    }
    delete [] d;
    return m_pData[nIndex];
    }template <class ARRAY_TYPE>
    int TNxArray<ARRAY_TYPE>::GetSize()
    {
    return m_nSize*sizeof(ARRAY_TYPE);
    }template <class ARRAY_TYPE>
    const int *GetDimension(int &nDimension)
    {
    nDimension=m_nDimension;
    return m_pDimension;
    }#endif//test.cpp//---------------------------------------------------------------------------#include <stdio.h>
    #include "NxArray.hpp"//---------------------------------------------------------------------------int main(int argc, char* argv[])
    {
      int d1[]={2,5,4};
      int d2[]={4,3};
      int i,j,k;
      TNxArray <int> A(DIM(d1),d1);
      printf("\nTNxArray object instance A(%d Bytes):\n\n",A.GetSize ());
      for(i=0;i<d1[0];i++)
        for(j=0;j<d1[1];j++)
          {
          for(k=0;k<d1[2];k++)
            {
            A(i,j,k)-=(i+j-k);
            printf("  A(%d,%d,%d)=%-3d",i,j,k,A(i,j,k));
            }
          printf("\n");
          }
      TNxArray <double> B(DIM(d2),d2);
      printf("\nTNxArray object instance B(%d Bytes):\n\n",B.GetSize());
      for(i=0;i<d2[0];i++)
        {
        for(j=0;j<d2[1];j++)
          {
          B(i,j)=(i+j-1.1)*1.7;
          printf("  B(%d,%d)=%2.3f",i,j,B(i,j));
          }
        printf("\n");
        }
      return 0;
    }
    //---------------------------------------------------------------------------