C++中二维动态数组的创建
方法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。
- 上一篇:没有了
- 下一篇:没有了
