C++vector二维数组
时间: 2025-01-16 07:58:47 浏览: 46
### C++ 中使用 `vector` 创建和操作二维数组
#### 使用 `vector<vector<int>>` 定义二维数组
在C++中,可以利用标准模板库中的`std::vector`来定义二维数组。通过创建一个包含多个`vector<int>`类型的外部向量,每个内部向量表示二维数组的一行。
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
// 初始化一个2×3的整型二维数组,所有元素初始值设为1
vector<vector<int>> matrix(2, vector<int>(3, 1));
cout << "Matrix content:" << endl;
for (size_t i = 0; i < matrix.size(); ++i) { // 遍历每一行
for (size_t j = 0; j < matrix[i].size(); ++j) { // 访问每行列元素
cout << matrix[i][j] << ' ';
}
cout << endl;
}
return 0;
}
```
此代码片段展示了如何声明并初始化一个具有特定大小和默认填充值得二维矩阵[^1]。
#### 获取二维数组尺寸
为了获得二维数组的具体维度(即行数和列数),可以直接调用`.size()`方法:
```cpp
// 假定matrix已经按照上述方式被正确定义过
int rows = matrix.size();
if (!rows) throw runtime_error("Empty matrix");
int cols = matrix[0].size();
cout << "Rows: " << rows << ", Columns: " << cols << endl;
```
这段程序说明了怎样安全地检索到二维数组的实际规模,并处理可能存在的空矩阵情况[^3]。
#### 动态调整二维数组大小
如果需要改变已有的二维数组结构,则可通过重新分配内存给各个子向量完成这一目标;也可以先清空再按需重建整个容器。
```cpp
void resize_matrix(vector<vector<int>>& mat, size_t new_rows, size_t new_cols){
mat.clear(); // 清除现有数据
// 构建新的指定规格的二维数组
mat.resize(new_rows);
for(auto& row : mat){
row.assign(new_cols, 0); // 将新加入的行设置成全零状态
}
}
resize_matrix(matrix, 4, 5);
for(const auto &row : matrix){ // 输出修改后的矩阵内容
copy(row.begin(), row.end(), ostream_iterator<int>(cout," "));
cout<<endl;
}
```
这里提供了一个函数用于灵活更改任意二维数组的空间布局,同时保持其作为参数传递的能力不变[^2]。
阅读全文
相关推荐


















