C++遍历vector<vector<int>>数组
时间: 2024-10-03 10:03:50 浏览: 5
在C++中,遍历二维向量`std::vector<std::vector<int>>`通常有两种方式:嵌套循环或者利用范围for循环。
1. **嵌套循环**:
```cpp
std::vector<std::vector<int>> matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
// 使用两个嵌套循环遍历
for (int i = 0; i < matrix.size(); ++i) {
for (int j = 0; j < matrix[i].size(); ++j) {
std::cout << matrix[i][j] << " ";
}
std::cout << "\n"; // 每行结束后换行
}
```
2. **范围for循环**:
从C++11开始,你可以使用范围for循环,但这只适用于支持迭代器的容器。对于二维向量,需要先获取内部向量的起始和结束迭代器:
```cpp
for (const auto& row : matrix) {
for (int element : row) {
std::cout << element << " ";
}
std::cout << "\n";
}
```
这里假设`row`是`matrix`中的每个元素,即一个一维向量。
相关问题
如何用for_each遍历vector<vector<int>>
可以使用嵌套的for_each函数来遍历vector<vector<int>>。首先,使用for_each遍历外层的vector,然后在每个外层vector元素上使用for_each遍历内层vector。以下是示例代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<std::vector<int>> vec{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
std::for_each(vec.begin(), vec.end(), [](std::vector<int>& inner_vec) {
std::for_each(inner_vec.begin(), inner_vec.end(), [](int value) {
std::cout << value << " ";
});
std::cout << std::endl;
});
return 0;
}
```
输出结果为:
```
1 2 3
4 5 6
7 8 9
```
在代码中,外层的for_each函数使用lambda表达式来遍历vector的每个元素,内层的for_each函数也使用lambda表达式来遍历每个内部vector的元素。在每个内部vector中,lambda表达式打印出每个元素的值,并在每个内部vector之间输出一个换行符。
vector<vector<int>>遍历
可以使用双重循环遍历vector<vector<int>>中的元素,如下所示:
```c++
vector<vector<int>> vec2d;
// 添加一些元素
vec2d.push_back(vector<int>{1, 2, 3});
vec2d.push_back(vector<int>{4, 5, 6});
vec2d.push_back(vector<int>{7, 8, 9});
// 遍历二维向量
for (auto row : vec2d) {
for (auto col : row) {
cout << col << " ";
}
cout << endl;
}
```
这段代码会输出:
```
1 2 3
4 5 6
7 8 9
```
希望这个回答能够帮到您!