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;
}
}
本文原创,转载请注 狮子座流星
C++ 动态分配二维和三维数组的更多相关文章
- three+pixi 将二维和三维结合
PIXI+THREE 使用 PIXI 和 THREE 将三维和二维渲染在同一个 canvas 下面 效果 思路 初始化 PIXI 的 Application, 作为 pixi 最重要的变量 const ...
- Java 一维数组 二维数组 三维数组
二维数组包含一位数组 三维数组就是在二维数组的基础上,再加一层.把二维数组看做是一维数组就可以了,按照上述理解类推. 下面是 一维 二维 三维数组例子 一维数组: int[] array1 ...
- VC、OpenGL、ArcGIS Engine开发的二维三维结合的GIS系统
一.前言 众所周知,二维GIS技术发展了近四十年,伴随着计算机软硬件以及关系型数据库的飞速发展,二维GIS技术已日臻完善.在对地理信息的分析功能上有着无可比拟的优势.一些宏观的地理信息,一维的地理信息 ...
- C语言malloc函数为一维,二维,三维数组分配空间
c语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放,这些数据存储在堆区.可以根据需要,向系统申请 ...
- python如何删除二维或者三维数组/列表中某维的空元素
如题,个人在使用python进行数据预处理过程中出现的问题,抽象成删除三维列表中某维为空的问题. 一.首先来看一下三维数组/列表的结构 仔细看下图就会很清楚了: 轴0即是去除第一个外括号后第一层(我把 ...
- 三维数组——与 宝玉QQ群讨论交流之二
宝玉 12:27:35 这几天看了大部分大家交的作业,发现一个主要问题还是卡在对三维数组的理解上,之前把三维数组类比成三维空间可能会造成误导 宝玉 12:27:45 其实鞠老师解释的很好: 三维数组 ...
- 二维数组 cudaMallocPitch() 和三维数组 cudaMalloc3D() 的使用
▶ 使用函数 cudaMallocPitch() 和配套的函数 cudaMemcpy2D() 来使用二维数组.C 中二维数组内存分配是转化为一维数组,连贯紧凑,每次访问数组中的元素都必须从数组首元素开 ...
- numpy中三维数组转变成二维数组
numpy中reshape()函数对三维数组进行转换成二维数组,见下面例子: >>>a=np.reshape(np.arange(18),(3,3,2)) >>> ...
- php基础------将二维数组转三维数组
将二维数组转为三维数组 /** * 二维数组转三维数组(指定键为三维数组的键名) * @param [type] $arr [要排序的数组] * @param [type] $key [指定的键] * ...
随机推荐
- GRE and VXLAN with Open vSwitch
因为在OpenStack的Neutron中比较常用,所以参考别人的博客试了下OVS的一些隧道封装功能(GRE,VXLAN). 实验:实现两个host的Network namespace之间的通信,NS ...
- 随机森林(Random Forest,简称RF)
阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 袋外错误率(oob error) 6 随机森林工作原理解释的一个简单例子 7 随机森林的Pyth ...
- REST 规范
DRF之REST规范介绍及View请求流程分析 DRF之解析器组件及序列化组件 DRF - 序列化组件(GET/PUT/DELETE接口设计).视图优化组件 DRF之权限认证频率组件 DRF之注册器响 ...
- Shiro的校验Session是否过期处理的过程
首先开启定时扫描活跃的session进行校验 <!-- shiro会话管理 --> <!-- 即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中:会话可以是普通 Jav ...
- linux shell find
find / -ctime +365 ! -name "*.bat" -exce rm -rf {} \;
- JBPM4.4学习笔记
1.JBPM4表说明: JBPM4_DEPLOYMENT 流程定义表 JBPM4_DEPLOYPROP 流程定义属性表 JBPM4_EXECUTION 流程实例表 JBPM4_HIST_ACTINST ...
- 利用同步辅助类CountDownLatch计算多线程的运行时间
一.CountDownLatch jdk提供的一个同步辅助类,在完成一组在在其他线程中执行的操作前,允许一个或者多个其他的线程等待,通过调用 await() 方法阻塞,直到由于 countDown() ...
- 什么时候必须使用UI相机? 多个相机的作用原理?
首先,要从主画布说起,maincanvas,这个有什么限制?主画布是一张默认用来绘制UI的地方,这些UI必须是系统提供的UI组件,在画面下挂一个3D物体或非UI的2D物品是不会被绘制到画布上的,但是仍 ...
- linux 下的mysql 连接报错
报错: Fri Jul 28 16:28:52 CST 2017 WARN: Establishing SSL connection without server’s identity verific ...
- Linux实战教学笔记32:企业级Memcached服务应用实践
一, Memcached介绍 1.1 Memcached与常见同类软件对比 (1)Memcached是什么? Memcached是一个开源的,支持高性能,高并发的分布式内存缓存系统,由C语言编写,总共 ...