方法一: 使用vector容器
1.创建整数型二维数组
先建列,再建行,先创建一个包含m个元素的向量a,再创建二维向量arr,通过push_back将一维向量作为行添加到二维向量中
#include<iostream>
#include<vector>
using namespace std;
int main() {
//创建一个包含m个元素,每个元素初始值为0的向量
int n, m;
cin >> n >> m;
vector <int> a(m, 0);
//a向量中的元素可以修改
a[0] = 1;
a[1] = 2;
a[2] = 3;
vector<vector<int>> arr;
//上述代码也可简化为 vector<vector<int>> arr(n,vector <int> (m,0));
for (int i = 0; i < n; i++) {
//将一维向量a作为一个新的行添加到二维向量中
arr.push_back(a);
}
for (const auto& row : arr) {
for (int val : row) {
cout << val << " ";
}
cout << endl;
}
return 0;
}
代码运行结果:

2.创建字符类型的二维数组
#include<iostream>
#include<vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector <string> arr(n);
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
for (const auto& row : arr) {
for (char val : row) {
cout << val << " ";
}
cout << endl;
}
}
代码运行结果:

方法二:使用指针,new来创建动态空间
与vector方法创建的顺序相反,先建行再建列,即先为其创建n行行指针,再遍历其n行行指针,使每个内存空间存放m个数据
1.创建整数型二维数组
#include<iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int** arr = new int* [n]; //创建n个指向n个内存空间的指针
for (int i = 0; i < n; i++) {
arr[i] = new int[m]; //每个内存空间存放m个int型的数据
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
arr[i][j] = i * m + j + 1;
}
}
//此处遍历不能使用两个加强for循环,只能用两个嵌套的循环来遍历
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}
代码运行结果:

2.创建字符型二维数组
#include<iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
char** arr = new char*[n];
for (int i = 0; i < n; i++) {
arr[i] = new char[m];
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> arr[i][j];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout<< arr[i][j]<<" ";
}
cout << endl;
}
}
代码运行结果:

补充: 使用 push_back 动态添加元素
#include <iostream>
#include <vector>
int main() {
// 创建一个空的整数向量
vector<int> vec;
// 动态添加元素
vec.push_back(10);
vec.push_back(20);
vec.push_back(30);
// 打印向量的值
for (int i = 0; i < vec.size(); ++i) {
cout << vec[i] << " ";
}
cout << std::endl;
return 0;
}
代码运行结果:
![]()
318

被折叠的 条评论
为什么被折叠?



