C++使用new方法创建动态二维数组

用new方法创建二维数组常见于矩阵的创建;数据结构中邻接矩阵的创建等。

和一维数组的创建其实是一样的,假设有n个元素,那动态一维数组的创建是这样的

int* mat = new int[n];

而二维数组只是多了一步,这里为了方便理解可以理解成先创建了n个一维数组,再对这n个一维数组开辟空间。

int** mat=new int*[n];

for (int i = 0;i < n;i++)
		mat[i] = new int[n];
		

这里放上一组样例和一段代码供各位测试

输入

1
4
0 1 1 1 
1 0 1 1 
1 1 0 1 
1 1 1 0 

#include 
using namespace std;

int main()
{
	int k;
	cin >> k;
	while (k--)
	{
		int n;
		cin >> n;
		int** mat=new int*[n];
		for (int i = 0;i < n;i++)
			for (int j = 0;j < n;j++)
				mat[i] = new int[n];
		
		for (int i = 0;i < n;i++)
			for (int j = 0;j < n;j++)
				cin >> mat[i][j];

		for (int i = 0;i < n;i++)
		{
			for (int j = 0;j < n;j++)
			{
				cout << mat[i][j] <<" ";
			}
			cout << endl;
		}

	}
}

附:这里没写delete,是因为这个程序比较小。但正常来说是要写delete来释放你申请的这些空间的。能理解new的操作就能理解怎么释放二维数组的空间了--先申请的先释放。代码如下。


for (int i = 0;i < n;i++)
	delete[]mat[i];
delete[]mat;

你可能感兴趣的:(C++,算法)