使用`std::vector`来创建二维数组

C++ 中,使用 `std::vector` 来创建二维数组(通常称为二维向量)是一种非常灵活和方便的
方式。 `std::vector` C++ 标准模板库( STL )中的一个动态数组类,它可以方便地调整大小,
并且不需要预先确定数组的大小。
下面是一个详细的示例,展示了如何使用 `std::vector` 来创建一个二维数组,并对其进行一些
基本操作,如初始化、访问元素、修改元素和遍历数组。
### 一、创建二维向量
首 先 , 我 们 需 要 包 含 必 要 的 头 文 件 , 并 创 建 一 个 二 维 向 量 。 这 里 我 们 使 用
`std::vector<std::vector<int>>` 来表示一个二维整数数组。
```cpp
#include <iostream>
#include <vector>
int main() {
// 创建一个二维向量,初始时没有任何元素
std::vector<std::vector<int>> matrix;
// 可以通过 push_back 方法添加行
matrix.push_back({1, 2, 3}); // 添加第一行,包含三个元素
matrix.push_back({4, 5, 6}); // 添加第二行,包含三个元素
matrix.push_back({7, 8, 9}); // 添加第三行,包含三个元素
// 输出二维向量的大小
std::cout << " 行数 : " << matrix.size() << std::endl;
for (const auto& row : matrix) {
std::cout << " 列数 : " << row.size() << std::endl;
}
return 0;
}
```
在这个例子中,我们首先创建了一个空的二维向量 `matrix` 。然后,我们使用 `push_back`
法向 `matrix` 中添加了三行,每行都包含三个整数。最后,我们输出了二维向量的行数和每
行的列数。
### 二、访问和修改元素
访问和修改二维向量中的元素非常简单。你可以使用两个索引来访问一个元素,第一个索引
表示行,第二个索引表示列。修改元素时,只需将新值赋给对应的元素即可。 ```cpp
#include <iostream>
#include <vector>
int main() {
// 创建一个二维向量并初始化
std::vector<std::vector<int>> matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 访问元素并输出
std::cout << "matrix[1][2] 的值为 : " << matrix[1][2] << std::endl; // 输出 6
// 修改元素
matrix[1][2] = 10; // 将第二行第三列的元素修改为 10
// 再次访问并输出修改后的元素
std::cout << " 修改后 matrix[1][2] 的值为 : " << matrix[1][2] << std::endl; // 输出 10
return 0;
}
```
在这个例子中,我们首先创建并初始化了一个二维向量 `matrix` 。然后,我们访问了
`matrix[1][2]` 这个元素,并输出了它的值。接着,我们将这个元素的值修改为 10 ,并再次访
问和输出了修改后的值。
### 三、遍历二维向量
遍历二维向量通常需要使用嵌套的循环。外层循环遍历行,内层循环遍历列。下面是一个示
例:
```cpp
#include <iostream>
#include <vector>
int main() {
// 创建一个二维向量并初始化
std::vector<std::vector<int>> matrix = {
{1, 2, 3},
{4, 5, 6}, {7, 8, 9}
};
// 遍历二维向量并输出所有元素
for (size_t i = 0; i < matrix.size(); ++i) {
for (size_t j = 0; j < matrix[i].size(); ++j) {
std::cout << matrix[i][j] << " ";
}
std::cout << std::endl; // 每行输出完毕后换行
}
return 0;
}
```
在这个例子中,我们使用两个嵌套的 `for` 循环来遍历二维向量 `matrix` 的所有元素,并输出它
们的值。外层循环遍历每一行,内层循环遍历每一列。每行输出完毕后,我们使用 `std::cout
<< std::endl;` 来换行。
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dalao_zzl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值