zoukankan      html  css  js  c++  java
  • 如何创建动态的多维数组且内存空间连续

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

    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 < 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;
    }
    
    


     


     

  • 相关阅读:
    springboot项目打war包流程
    ant配置文件详解(转)
    如何提升java服务器并发性能
    find用法
    基姆拉尔森计算公式 推导计算星期几
    递归第二弹:分类强化
    拨钟问题
    POJ1222熄灯问题【位运算+枚举】
    POJ1013称硬币【枚举】
    4148生理周期
  • 原文地址:https://www.cnblogs.com/pangblog/p/3348063.html
Copyright © 2011-2022 走看看