new方法创建动态二维数组,vector创建动态二维数组
#include<iostream>
#include<vector>
using namespace std;
void main() {
int n ;
int m ;
printf("input:\n");
scanf_s("%d,%d", &n,&m);//输入行和列
printf("使用new创建动态数组:\n");
int** p = new int* [n];//首先创建n行的数组,列不确定
for (int j = 0; j < n; j++)
p[j] = new int(m);//给每行添加m列
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {//给二维数组赋初始值,并打印
p[i][j] = (i + 1) * (j + 2);//赋值
printf("%d\t", p[i][j]);
}
printf("\n");
}
delete[]p;
printf("使用vector创建动态数组:\n");
vector<vector<int>>q;//创建二维数组q,不知道行和列
//给二维数组确定行n和列m,并初始化
for (int i = 0; i < n; i++) {
vector<int>temp;//创建一个临时的一维数组
for (int j = 0; j < m; j++) {
temp.push_back((i + 1) * (j + 2));
}
q.push_back(temp);
}
//将二维数组里面的值进行打印
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%d\t", q[i][j]);
}
printf("\n");
}
}
测试结果
当输入为3行,4列时,结果如下:
欢迎各位路友留言讨论~