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 [指定的键] * ...
随机推荐
- ethereum
几个网址 https://github.com/ethereum/go-ethereum/wikihttp://ethfans.org windows下安装以太币钱包 从下面网址下载钱包,不用安装是绿 ...
- 12_java之构造方法|this|super
01构造方法引入 * A:构造方法的引入 在开发中经常需要在创建对象的同时明确对象的属性值,比如员工入职公司就要明确他的姓名.年龄等属性信息. 那么,创建对象就要明确属性值,那怎么解决呢?也就是在创建 ...
- [转] 基于C#的波形显示控件的实现
转自 基于C#的波形显示控件的实现[附完整源码下载] 编者记: 09年暑假正好在学院实验室呆了一段时间,做了个完整的上位机软件(具体实现:根据下位机的指令,实现通过串口来操纵下位机进行实验,并将采集的 ...
- leetcode720
public class Solution { public string LongestWord(string[] words) { var maxlist = new List<string ...
- delphi BLE 学习
TBluetoothLE 控件 TBluetoothLE.FManager: TBluetoothLEManager; class constructor TBluetoothLEManager.Cr ...
- 颜色模式中8位,16位,24位,32位色彩是什么意思?会有什么区别?计算机颜色格式( 8位 16位 24位 32位色)<转>
颜色模式中8位,16位,24位,32位色彩是什么意思?会有什么区别简单地说这里说的位数和windows系统显示器设置中的颜色位数是一样的.表示的是能够显示出来的颜色的多少. 8位的意思是说,能够显示出 ...
- 利用Console来学习、调试JavaScript
一 什么是 Console Console 是用于显示 JS和 DOM 对象信息的单独窗口.并且向 JS 中注入1个 console 对象,使用该对象 可以输出信息到 Console 窗口中. 二 ...
- [iOS]UIScrollView嵌套UITableView,超出屏幕的cell点击不了问题
最初我是用UIScrollView嵌套了一个UIView,然后UIView里面嵌套UITableView,这样cell 就会超出屏幕那一部分点击不了. 解决方法如下,UITableView拖出来,作为 ...
- sql中问号是干什么的??
第一次在后台 程序中遇到sql语句中的问号: /** * * 方法描述 : 通过账号id更新该账号状态 * @param state 状态 * @param id 账号id */ @Modifying ...
- Elasticsearch-PHP 搜索操作
搜索操作 好吧,这不叫elasticsearch的不劳而获!让我们来谈谈PHP客户端中的搜索操作. 客户端允许你通过REST API访问所有的查询和公开的参数,尽可能的遵循命名规则.让我们来看一些例子 ...