入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

C++中二维动态数组的创建

创建时间:2014-05-16 投稿人: 浏览次数:1713

方法1.用new / delete创建二维动态数组

代码:

#include<iostream>
#include<vector>
using namespace std;

#define ROW 2   //行数
#define COLUMN 3 //列数
#define VALUE  1 //数组元素值

//使用new/delete创建二维数组
int main()
{
	int **arr=new int*[ROW];
	int i,j;
	for(i=0;i<ROW;i++)
	{
		arr[i]=new int[COLUMN];
	}
	for(int i=0;i<ROW;i++)
	{
		for(j=0;j<COLUMN;j++)
		{
			arr[i][j]=VALUE;
			cout<<arr[i][j]<<" ";
		}
		cout<<endl;
	}

	for(i=0;i<ROW;i++)
		delete [] arr[i];
	delete arr; 
	return 0;

}

方法2.使用容器创建二维动态数组

      方法a.

#include<iostream>
#include<vector>
using namespace std;

#define ROW 2   //行数
#define COLUMN 3 //列数
#define VALUE  1 //数组元素值

//使用容器创建动态二维数组
int main()
{
	vector<vector<int>> arr(ROW);//设置二维数组的行数,定义类型为vector<int>的向量arr,该向量中含有ROW个子向量,这ROW个子向量中的数据 类型为int
	vector<vector<int>>::iterator it1;//定义迭代器it1,用于遍历二维数组中的行
	vector<int>::iterator it2;//定义迭代器it2,用于遍历二维数组中的列
	for(it1=arr.begin();it1!=arr.end();it1++)
	{
		(*it1).resize(COLUMN);//为每个行向量设置大小COLUMN
		for(it2=it1->begin();it2!=it1->end();++it2)
		{
			*it2=VALUE;
		}
	}

	cout<<"arr:"<<arr.size()<<endl;//输出的为二维数组的行数
	for(it1=arr.begin();it1!=arr.end();it1++)
	{
		for(it2=it1->begin();it2!=it1->end();it2++)
		{
			cout<<*it2;
		}
		cout<<endl;
	}
	return 0;
}
   

     方法b.还可以使用vector< vector<int> >  arr( ROW, vector<int>(COLUMN) );来指定二维数组的行数和列数

#include<iostream>
#include<vector>
using namespace std;

#define ROW 2   //行数
#define COLUMN 3 //列数
#define VALUE  1 //数组元素值

int main()
{
	vector<vector<int>> arr(ROW,vector<int>(COLUMN));
	vector<vector<int>>::iterator it1;
	vector<int>::iterator it2;
	for(it1=arr.begin();it1!=arr.end();it1++)
	{
		for(it2=it1->begin();it2!=it1->end();it2++)
		{
			*it2=VALUE;
		}
	}
	cout<<"arr:"<<arr.size()<<endl;////输出的为二维数组的行数;
	for(it1=arr.begin();it1!=arr.end();it1++)
	{
		for(it2=it1->begin();it2!=it1->end();it2++)
		{
			cout<<*it2<<" ";
		}
		cout<<endl;
	}
	return 0;
}


ps:既然这里提到了二维数组的创建方法,下面就顺便贴出了普通二维数组的创建方法

 1.将二维数组看成一维数组进行处理

代码:

#include<iostream>
#include<vector>
using namespace std;

#define ROW 2   //行数
#define COLUMN 3 //列数
#define VALUE  1 //数组元素值

//将二维数组当成一维数组来处理,因此普通二维数组的内存分配是连续的
int main()
{
	int a[ROW][COLUMN];
	int *p=a[0];
	int i,j;
	for(i=0;i<ROW;i++)
		for(j=0;j<COLUMN;j++)
			p[i*COLUMN+j]=VALUE;
	for(i=0;i<ROW;i++)
	{
		for(j=0;j<COLUMN;j++)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}

	return 0;
}

2.利用数组指针

代码:

#include<iostream>
#include<vector>
using namespace std;

#define ROW 2   //行数
#define COLUMN 3 //列数
#define VALUE  1 //数组元素值

//利用数组指针创建动态二维数组
int main()
{
	int a[ROW][COLUMN];
	int (*p)[COLUMN];//数组指针,指向含有COLUMN个元素的一维数组
	int i,j;
	p=a;
	for(i=0;i<ROW;i++)
		for(j=0;j<COLUMN;j++)
			*(*(p+i)+j)=VALUE;
	for(i=0;i<ROW;i++)
	{
		for(j=0;j<COLUMN;j++)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<endl;		
	}
	
	return 0;
}




声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像