一、vector简介
vector是C++ STL库中的一个容器,它能够动态地调整大小,具有快速的插入和删除操作。可以看作是一个可以像数组一样使用的动态数组,支持下标随机访问。
二、使用vector实现二维数组
#include <vector>
using namespace std;
int main() {
int row = 3, col = 4;
vector<vector<int>> arr(row, vector<int>(col));
// 遍历二维数组
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
arr[i][j] = i * col + j;
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}
本例使用vector<vector<int>>定义了一个二维数组,其中第一个vector表示行,第二个vector表示列。初始化时,将行数和列数传入vector的构造函数,即可动态创建一个row行col列的二维数组。
该二维数组与普通数组相似,可以通过arr[i][j]访问二维数组的元素。在遍历二维数组时,可以使用双重循环依次访问二维数组的每个元素。
三、二维数组的动态调整
#include <vector>
using namespace std;
int main() {
int row = 3, col = 4;
vector<vector<int>> arr(row, vector<int>(col));
// 输出原始数组
cout << "原始数组:" << endl;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
arr[i][j] = i * col + j;
cout << arr[i][j] << " ";
}
cout << endl;
}
// 动态添加一行,列数不变
row++;
arr.push_back(vector<int>(col));
cout << "添加一行后的数组:" << endl;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
arr[i][j] = i * col + j;
cout << arr[i][j] << " ";
}
cout << endl;
}
// 动态添加一列,行数不变
col++;
for (int i = 0; i < row; i++) {
arr[i].push_back(i * col + col - 1);
}
cout << "添加一列后的数组:" << endl;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}
本例展示了如何使用vector动态调整二维数组的大小。首先定义了一个3行4列的二维数组,并初始化了所有元素。然后,通过arr.push_back增加一行,列数不变;通过arr[i].push_back增加一列,行数不变。每次增加完后,均需重新遍历整个二维数组输出。
四、与普通数组的对比
使用vector实现二维数组,优点在于动态调整大小方便,不需要手动释放内存。同时,vector的操作比普通数组更加灵活,例如vector支持动态追加元素,可以方便地进行插入和删除。相比之下,使用普通数组实现二维数组会有许多不便之处,例如需要手动申请和释放内存,无法进行动态调整等。