目的:熟悉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;
} }

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

C++ 动态分配二维和三维数组的更多相关文章

  1. three+pixi 将二维和三维结合

    PIXI+THREE 使用 PIXI 和 THREE 将三维和二维渲染在同一个 canvas 下面 效果 思路 初始化 PIXI 的 Application, 作为 pixi 最重要的变量 const ...

  2. Java 一维数组 二维数组 三维数组

    二维数组包含一位数组  三维数组就是在二维数组的基础上,再加一层.把二维数组看做是一维数组就可以了,按照上述理解类推.   下面是 一维 二维 三维数组例子   一维数组: int[] array1 ...

  3. VC、OpenGL、ArcGIS Engine开发的二维三维结合的GIS系统

    一.前言 众所周知,二维GIS技术发展了近四十年,伴随着计算机软硬件以及关系型数据库的飞速发展,二维GIS技术已日臻完善.在对地理信息的分析功能上有着无可比拟的优势.一些宏观的地理信息,一维的地理信息 ...

  4. C语言malloc函数为一维,二维,三维数组分配空间

    c语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放,这些数据存储在堆区.可以根据需要,向系统申请 ...

  5. python如何删除二维或者三维数组/列表中某维的空元素

    如题,个人在使用python进行数据预处理过程中出现的问题,抽象成删除三维列表中某维为空的问题. 一.首先来看一下三维数组/列表的结构 仔细看下图就会很清楚了: 轴0即是去除第一个外括号后第一层(我把 ...

  6. 三维数组——与 宝玉QQ群讨论交流之二

    宝玉 12:27:35 这几天看了大部分大家交的作业,发现一个主要问题还是卡在对三维数组的理解上,之前把三维数组类比成三维空间可能会造成误导 宝玉 12:27:45 其实鞠老师解释的很好: 三维数组 ...

  7. 二维数组 cudaMallocPitch() 和三维数组 cudaMalloc3D() 的使用

    ▶ 使用函数 cudaMallocPitch() 和配套的函数 cudaMemcpy2D() 来使用二维数组.C 中二维数组内存分配是转化为一维数组,连贯紧凑,每次访问数组中的元素都必须从数组首元素开 ...

  8. numpy中三维数组转变成二维数组

    numpy中reshape()函数对三维数组进行转换成二维数组,见下面例子: >>>a=np.reshape(np.arange(18),(3,3,2)) >>> ...

  9. php基础------将二维数组转三维数组

    将二维数组转为三维数组 /** * 二维数组转三维数组(指定键为三维数组的键名) * @param [type] $arr [要排序的数组] * @param [type] $key [指定的键] * ...

随机推荐

  1. C 语言 - Unicode 解决中文问题

    问题: 打印一句中文 #include <stdio.h> int main() { char str[] = "你好,世界"; printf("%s\n&q ...

  2. ncbi API

    https://www.ncbi.nlm.nih.gov/sviewer/?db=nuccore&query_key=2&term=DYNLL2&page_size=1& ...

  3. 使用JAVA爬取京东商品价格

    有一件物品,你想看看它在京东下所有搜索结果的价格,要怎么办呢? 京东这个网站还是很好爬的,所有价格信息都写在了Html里面,而且跳到第二页之后,url也是有规律的,基本没有什么技术难度. 例如:想找i ...

  4. Spring实战之处理自动装配的歧义性

    仅有一个bean匹配所需的结果时,自动装配才是有效的.如果不仅有一个bean能够匹配结果的话,这种歧义性会阻碍Spring自动装配属性.构造器参数或方法参数.为了阐述自动装配的歧义性,假设我们使用@A ...

  5. 6. H.264/AVC编码器原理

    1. H.264/AVC的应用 H.264 不仅具有优异的压缩性能,而且具有良好的网络亲和性,这对实时的视频通信是十分重要的.和 MPEG-4 中的重点是灵活性不同,H.264 着重在压缩的高效率和传 ...

  6. 领域Command

    一.项目结构 二.代码 /// <summary> /// /// </summary> public interface ICommand { } /// <summa ...

  7. MySQL数据库篇之表的增删改查

    主要内容: 一.表介绍 二.创建表 三.查看表结构 四.修改表结构 五.复制表 六.删除表 1️⃣ 表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称 ...

  8. Linux实战教学笔记24:SSH连接原理及ssh-key

    目录 第二十四节 SSH连接原理及ssh-key讲解 第1章 SSH服务 1.1 ssh介绍 1.2 知识小结 第2章 ssh结构 2.1 SSH加密技术 第3章 ssh服务认证类型 3.1 基于口令 ...

  9. [codevs3981]动态最大子段和不带修改(线段树)

    解题关键:最大子段和需要多个信息维护. 注意查询时的pushup. #include<cstdio> #include<cstring> #include<algorit ...

  10. 让tomcat自动定位到项目

    在servelt.xml中添加粗体部分. <Host name="localhost" appBase="webapps" unpackWARs=&quo ...