在
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;`
来换行。