C++遍历vector<vector<int>>数组
时间: 2024-10-03 15:03:50 浏览: 40
在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之间输出一个换行符。
c++初始化全零vector<vector<int>>数组
在 C++ 中,你可以使用 std::vector 的构造函数以及嵌套的构造函数来初始化一个二维向量(vector<vector<int>>),使其所有元素都是全零的。下面是一个示例:
```cpp
#include <vector>
std::vector<std::vector<int>> zeroFilledMatrix(int rows, int cols) {
std::vector<std::vector<int>> matrix(rows, std::vector<int>(cols, 0)); // 使用范围推导创建全零向量
return matrix;
}
int main() {
int row = 3;
int col = 4;
std::vector<std::vector<int>> myZeroMatrix = zeroFilledMatrix(row, col);
for (const auto& inner : myZeroMatrix) { // 遍历外层向量
for (int element : inner) { // 遍历内层向量
std::cout << element << " "; // 输出每个元素,这里会打印出全是0
}
std::cout << "\n";
}
return 0;
}
```
在这个例子中,`zeroFilledMatrix` 函数接受行数和列数作为参数,然后返回一个大小为指定行数和列数的全零二维 vector。
阅读全文