首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

怎么创建动态的多维数组且内存空间连续

2013-10-01 
如何创建动态的多维数组且内存空间连续大部分同学都会创建一位数组,并且一位数组以创建好内存空间就是连续

如何创建动态的多维数组且内存空间连续

大部分同学都会创建一位数组,并且一位数组以创建好内存空间就是连续的。但常常也会要用到创建多维连续空间的数组,下面以二三维为例子,大家看了就明白。这就是数组指针与指针数组的灵活应用。(这里说的创建都是指动态创建)

 

template <typename T>T **CreateDoubleArray(int m,int n)//m为高度,n为每行的长度{T **cp = new T*[m];T *rp = new T[m*n];cp[0] = rp;for(int i = 1;i < m;++i)cp[i] = rp+i*m;memset(rp,0,m*n*sizeof(T));return cp;}template <typename T>T ***CreateTrebleArray(int m,int n,int x){T ***cp = new T**[m];for(int i = 0;i < m;++i){cp[i] = new T*[n];}T *p = new T[m*n*x];for(int i = 0;i < n;++i)for(int j = 0;j < x;++j){cp[i][j] = p+i*n*x+j*x;}memset(p,0,m*n*x*sizeof(T));return cp;}#include <iterator>#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){int **a = CreateDoubleArray<int>(2,2);int ***b = CreateTrebleArray<int>(2,2,2);b[1][1][1] = 100;for(int i =0  ;i < 2;++i)for(int j =0  ;j < 2;++j)for(int q =0  ;q < 2;++q)cout<<b[i][j][q];return 0;}


 


 

热点排行