⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myarrays.h

📁 格子Boltzmann方法 格子Boltzmann方法是为了保留格子气自动机方法的优点
💻 H
字号:
// MyArrays.h 动态分配多维(2,3,4维)数组(C/C++)  Written by Li Qing.#ifndef MYARRAYS_H#define MYARRAYS_H//#define USE_CPP_COMPILER	// 如果仅用C编译器,请将此行全改成注释行// for Cvoid *Calloc1DArray(int n, int size_t);void Free1DArray(void *array);void **Calloc2DArray(int n2, int n1, int size_t);	// 仍然按照“最右边的下标变化最快”的原则void Free2DArray(void **array);void ***Calloc3DArray(int n3, int n2, int n1, int size_t);void Free3DArray(void ***array);void ****Calloc4DArray(int n4, int n3, int n2, int n1, int size_t);void Free4DArray(void ****array);// for C++#ifdef USE_CPP_COMPILER#ifndef NULL	#define NULL 0#endiftemplate <class T> T *New1DArray(int n, T *&array);template <class T> void Delete1DArray(T *&array);template <class T> T **New2DArray(int n2, int n1, T **&array);template <class T> void Delete2DArray(T **&array);template <class T> T ***New3DArray(int n3, int n2, int n1, T ***&array);template <class T> void Delete3DArray(T ***&array);template <class T> T ****New4DArray(int n4, int n3, int n2, int n1, T ****&array);template <class T> void Delete4DArray(T ****&array);//=================== for 1D ===================template <class T> T *New1DArray(int n, T *&array){	array = new T[n];	return array;}template <class T> void Delete1DArray(T *&array){	if(array) delete [] array;	array = NULL;}//=================== for 2D ===================template <class T> T **New2DArray(int n2, int n1, T **&array){	int i;	array = (T**)new unsigned long[n2];	if(array==NULL) return array;	array[0] = new T[n2*n1];	if(array[0]==NULL)	{		delete array;		return array=NULL;	}	for(i=1; i<n2; i++)		array[i] = array[0] + i*n1;	return array;}template <class T> void Delete2DArray(T **&array){	if(array[0]) delete [] array[0];	if(array) delete [] array;	array = NULL;}//=================== for 3D ===================template <class T> T ***New3DArray(int n3, int n2, int n1, T ***&array){	int i, j;	array = (T***)new unsigned long[n3];	if(array==NULL) return array;	array[0] = (T**)new unsigned long[n3*n2];	if(array[0]==NULL)	{		delete array;		return array=NULL;	}	for(j=1; j<n3; j++)		array[j] = array[0] + j*n2;	array[0][0] = new T[n3*n2*n1];	if(array[0][0]==NULL)	{		delete array[0];		delete array;		return array=NULL;	}	for(j=0; j<n3; j++)		for(i=0; i<n2; i++)			array[j][i] = array[0][0] + (j*n2 + i)*n1;	return array;}template <class T> void Delete3DArray(T ***&array){	if(array[0][0]) delete [] array[0][0];	if(array[0]) delete [] array[0];	if(array) delete [] array;	array = NULL;}//=================== for 4D ===================template <class T> T ****New4DArray(int n4, int n3, int n2, int n1, T ****&array){	int i, j, k;	array = (T****)new unsigned long[n4];	if(array==NULL) return array;	array[0] = (T***)new unsigned long[n4*n3];	if(array[0]==NULL)	{		delete array;		return array=NULL;	}	for(k=1; k<n4; k++)		array[k] = array[0] + k*n3;	array[0][0] = (T**)new unsigned long[n4*n3*n2];	if(array[0][0]==NULL)	{		delete array[0];		delete array;		return array=NULL;	}	for(k=0; k<n4; k++)		for(j=0; j<n3; j++)			array[k][j] = array[0][0] + (k*n3 + j)*n2;	array[0][0][0] = new T[n4*n3*n2*n1];	if(array[0][0][0]==NULL)	{		delete array[0][0];		delete array[0];		delete array;		return array=NULL;	}	for(k=0; k<n4; k++)		for(j=0; j<n3; j++)			for(i=0; i<n2; i++)				array[k][j][i] = array[0][0][0] + ((k*n3+j)*n2+i)*n1;	return array;}template <class T> void Delete4DArray(T ****&array){	if(array[0][0][0]) delete [] array[0][0][0];	if(array[0][0]) delete [] array[0][0];	if(array[0]) delete [] array[0];	if(array) delete [] array;	array = NULL;}#endif	// USE_CPP_COMPILER#endif	// MYARRAY_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -