zoukankan      html  css  js  c++  java
  • C++ 动态分配二维和三维数组

    目的:熟悉c++动态内存分配
    描述:使用c++程序定义动态数组类,使用new和delete操作符实现动态二维数组和三维数组的定义

    //main.cpp
    //主程序类

    #include <iostream>
    #include "DynamicArray.h"
    #include "DynamicArray3d.h"
    using namespace std;
    
    int main()
    {
        cout < < "Hello world!" << endl;
        DynamicArray a;
        a.printArray();
        DynamicArray3d b;
        b.printArray();
         return 0;
    }
    

    //DynamicArray.h
    //二维数组头文件

    #ifndef DYNAMICARRAY_H
    #define DYNAMICARRAY_H
    #include <iostream>
    using namespace std;
    class DynamicArray
    {
    public:
        DynamicArray(int m=5,int n=5);
        ~DynamicArray();
        void printArray();
    private:
        int **m_pArray;      
        int m_iSize;
        int n_iSize;         
    };
    
    #endif 
    

    //DynamicArray.cpp
    //二位数组源文件

    #include "DynamicArray.h"
    
    DynamicArray::DynamicArray(int m,int n)
    {
         int i,j;
         m_iSize=m;
         n_iSize=n;
         m_pArray = new int* [m_iSize];
         for (i = 0; i < m_iSize; i++)
              m_pArray [i] = new int[n_iSize];
         for (i = 0; i < m_iSize; i++)
             for (j = 0; j < n_iSize; j++)
              {
                   m_pArray[i][j]=i+10*j;
              }
    }
    
    DynamicArray::~DynamicArray()
    {
        for (int i = m_iSize; i > 0;)
              delete[] m_pArray[--i];
         delete[] m_pArray;
    }
    void DynamicArray::printArray()
    {
         int i,j;
         cout < < "Print Array:" << endl;
         for (i = 0; i < m_iSize; i++)
         {
              for(j = 0; j < n_iSize; j++)
              cout<<m_pArray [i][j]<<"   ";
              cout<<endl;
         }
    
    }
    

    //DynamicArray3d.h
    //三维数组头文件

    #ifndef DYNAMICARRAY3D_H
    #define DYNAMICARRAY3D_H
    #include <iostream>
    using namespace std;
    
    class DynamicArray3d
    {
         public:
              DynamicArray3d(int m=5,int n=5,int o=5);
              ~DynamicArray3d();
              void printArray();
         private:
              int ***m_pArray;      
              int m_iSize;
              int n_iSize;         
              int o_iSize;
    };
    
    #endif 
    

    //三维数组源文件

    
    #include "DynamicArray3d.h"
    
    DynamicArray3d::DynamicArray3d(int m,int n,int o)
    {
         int i,j,k ;
         m_iSize=m;
         n_iSize=n;
         o_iSize=o;
         m_pArray= new int**[m_iSize] ;
         for( i = 0 ; i < m_iSize ; i ++ )
              m_pArray[i] = new int*[n_iSize] ;
         for( i = 0 ; i < m_iSize ; i ++ )
              for( j = 0 ; j < n_iSize ; j ++ )
              m_pArray[i][j] = new int[o_iSize ] ;
       for(i = 0 ; i <m_iSize ; i ++ )
        for(j = 0 ; j < n_iSize ; j ++ )
         for( k = 0 ; k < o_iSize ; k ++)
          m_pArray[i][j][k] = i*100+j*10+k;
    }
    
    DynamicArray3d::~DynamicArray3d()
    {
    
    }
    
    void DynamicArray3d::printArray()
    {
         int i,j,k ;
         for(i = 0 ; i <m_iSize ; i ++ )
         {
              for(j = 0 ; j < n_iSize ; j ++ )
              {
                    for( k = 0 ; k < o_iSize ; k ++)
                          cout<<m_pArray[i][j][k]<<" ";
                   cout<<" ";
              }
         cout<<endl;
         }
    
    }
    

    本文原创,转载请注 狮子座流星

    零或一
  • 相关阅读:
    网络世界中的图片以及相关的处理
    Ninject 2.x细说1.基本使用
    Orchard1.4新功能自动路由(AutoRouter)并附Orchard最新1.4版汉化包
    json的一点总结
    ASP.NET MVC路由扩展:路由映射
    厚积薄发,丰富的公用类库积累,助你高效进行系统开发(12) 网络相关操作辅助类
    IIS是如何处理ASP.NET请求的
    一周最新示例代码回顾 (3/19–3/25)
    .NET插件系统(三) 插件间通信问题——设计可自组织和注入的组装程序
    缓存总结
  • 原文地址:https://www.cnblogs.com/R0b1n/p/5224062.html
Copyright © 2011-2022 走看看