C++中有三种方法来动态申请多维数组
(1)C中的malloc/free
(2)C++中的new/delete
(3)STL容器中的vector
1.c语言
1.一维
int *p;
printf("请输入开辟的数组长度:");
scanf("%d",&m);
p = (int*)malloc(sizeof(int)*m);//动态开辟
printf("请输入数据:");
for(i = 0; i < m ; i++)
scanf("%d",&p[i]);
printf("输出数据:\n");
for(i = 0; i < m; i++)
printf("%d ",p[i]);
free(p);
2.二维
//动态开辟二维数组
void dynamicCreate2Array()
{
int m,n;
int i,j;
int **p;
printf("请输入数组行和列:");
scanf("%d%d",&m,&n);
p = (int**)malloc(sizeof(int*)*m); //开辟行
for(i = 0; i < m; i++)
{
*(p+i) = (int*)malloc(sizeof(int)*n);//开辟列
}
//输入数据
printf("请输入数:");
for(i = 0 ; i < m;i++)
for(j = 0; j < n;j++)
scanf("%d",&p[i][j]);
//输出数据
for(i = 0 ; i < m;i++)
{
for(j = 0; j < n;j++)
{
printf("%3d ",p[i][j]);
}
printf("\n");
}
//释放开辟的二维空间
for(i = 0; i < m;i++)
free(*(p+i));
}
2.new 数组
1.一维
int *p = new int[len];
cout<<"请输入数据:";
for(int i = 0; i < len; i++)
cin>>p[i];
cout<<"输出数据:"<<endl;
for(i = 0; i < len; i++)
cout<<setw(4)<<p[i];
delete[] p;
2..动态开辟二维数组
#include <iostream>
#include<vector>
using namespace std;
vector<int> s;
int main()
{
//申请
int **a;
a=new int *[10];//一级指针数组
for(int i=0;i<10;i++)
a[i]=new int [10];//数据
//存入
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
a[i][j]=i+j;
//输出
for(int i=0;i<10;i++)
{ for(int j=0;j<10;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
//释放
for(int i=0;i<10;i++)
delete []a[i];
delete []a;
cout << "Hello world!" << endl;
return 0;
}
3.vector
545
//注意下面这一行:vector <int后两个 "> "之间要有空格!否则会被认为是重载 "> > "。
vector<vector<int> > p(m,vector<int>(n));
cout<<"请输入数据:";
for(int i = 0 ; i < m ; i++)
for(int j = 0; j < n; j++)
cin>>p[i][j];
cout<<"输出数据:"<<endl;
for(i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
cout<<setw(3)<<p[i][j];
cout<<endl;
}
来源点击打开链接