C++中动态申请二维数组

这里主要介绍C++中动态申请二维数组的两种方式,直接给出代码,很容易明白,简单的作为一个笔记。

#include <iostream>
#include <iomanip>         // 输入输出操纵  
#include <vector>
using namespace std;


// 法一:new 方式申请
void dynamicArray()
{
	int rows, cols;
	cin >> rows >> cols;
	int **element = new int* [rows];    // 申请二维动态数组
	int i;
	for (i = 0; i < rows; i++)
		element[i] = new int[cols];

	int j;
	for(i = 0; i < rows; i++)               // 初始化
	{
		for (j = 0; j < cols; j++)
		{
			cin >> element[i][j];		
		}
	}
	for (i = 0; i < rows; i++)
	{
		for(j = 0; j < cols; j++)
		{
			cout << setw(4) << element[i][j];   // 每个输出占四个字符,前面以空格填充
			//cout << setfill('*') << element[i][j];  // 空格以*填充
		}
		cout << endl;
	}

	for(i = 0; i < cols; i++) // 释放动态数组
	{
		delete []element[i];
	}
	delete []element;

}

// 法二:vector 方式  没用new无需释放
void dynamicArray2()
{
	int rows, cols;
	cin >> rows >> cols;
	vector<vector<int>> element(rows, vector<int>(cols));  // 用vector申请二维动态数组
	int i,j;
	for(i = 0; i < rows; i++)               // 初始化
	{
		for (j = 0; j < cols; j++)
		{
			cin >> element[i][j];		
		}
	}
	for (i = 0; i < rows; i++)
	{
		for(j = 0; j < cols; j++)
		{
			cout << setw(4) << element[i][j];   // 每个输出占四个字符,前面以空格填充
			//cout << setfill('*') << element[i][j];  // 空格以*填充
		}
		cout << endl;
	}

}

参考blog:1:http://www.cnblogs.com/China3S/p/3616938.html

2:http://blog.sina.com.cn/s/blog_afe2af380101b4gz.html

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。