如何创建动态的多维数组且内存空间连续
2013-09-30 22:26
381 查看
大部分同学都会创建一位数组,并且一位数组以创建好内存空间就是连续的。但常常也会要用到创建多维连续空间的数组,下面以二三维为例子,大家看了就明白。这就是数组指针与指针数组的灵活应用。(这里说的创建都是指动态创建)
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* ; } T *p = new T[m*n*x]; for(int i = 0;i < m;++i)//昨天这个地方代码有点问题,不好意思对不起大家了哈.... for(int j = 0;j < n;++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; }
相关文章推荐
- C++创建动态空间的未知大小的二维数组、三维数组、多维数组
- 动态创建多维数组
- 如何解决Qt 4GUI程序中动态创建内存的泄露问题
- c++创建二维动态数组与内存释放
- c语言中内存的动态分配与释放(多维动态数组构建)
- iframe如何动态创建及释放其所占内存
- c语言中函数(linux命令查看依赖类库),数组(内存存储是连续的内存空间),Linux下查看&a,&a[0],a之间的值,可变数组
- C++ 用new 动态创建多维数组
- 动态创建多维数组的方法
- 如何在 Java 中创建多维数组
- wildmagic 内存连续的多维数组申请与释放
- 我该如何动态分配多维数组?
- Delphi 如何清除动态数组的内存?
- js中如何创建变化的数组名,以及根据动态数组名,查找数组
- c语言中内存的动态分配与释放(多维动态数组构建)
- c语言中内存的动态分配与释放(多维动态数组构建)
- C++ 用new 动态创建多维数组
- 为数组动态开辟空间,合理使用内存资源
- 动态分配多维数组和释放其内存
- 数组:静态分配连续内存空间