在 C++ 中,std::vector
是一个非常灵活和强大的动态数组实现。对于处理二维数组,vector
提供了一个简单且高效的解决方案。本文将详细介绍如何使用 vector
创建和操作二维数组,附带代码示例和图例解析,帮助你深入理解其用法。
1. 创建二维 vector
1.1 使用嵌套 vector
最常见的方式是使用嵌套的 vector
,即一个 vector
中的元素也是一个 vector
。
#include <iostream>#include <vector>int main() { // 创建一个 3x4 的二维 vector std::vector<std::vector<int>> matrix(3, std::vector<int>(4, 0)); // 输出矩阵大小 std::cout << "行数: " << matrix.size() << ", 列数: " << matrix[0].size() << std::endl; return 0;}
图例解析:
matrix+----+----+----+----+| 0 | 0 | 0 | 0 | -> row 0+----+----+----+----+| 0 | 0 | 0 | 0 | -> row 1+----+----+----+----+| 0 | 0 | 0 | 0 | -> row 2+----+----+----+----+
2. 访问和修改元素
可以通过行和列的索引访问和修改元素:
int main() { std::vector<std::vector<int>> matrix(3, std::vector<int>(4, 0)); // 修改元素 matrix[1][2] = 5; // 设置第二行第三列为5 // 访问元素 std::cout << "matrix[1][2]: " << matrix[1][2] << std::endl; // 输出 5 return 0;}
图例解析:
matrix+----+----+----+----+| 0 | 0 | 0 | 0 | -> row 0+----+----+----+----+| 0 | 0 | 5 | 0 | -> row 1+----+----+----+----+| 0 | 0 | 0 | 0 | -> row 2+----+----+----+----+
3. 遍历二维 vector
遍历二维 vector
的方式可以使用嵌套循环:
int main() { std::vector<std::vector<int>> matrix(3, std::vector<int>(4, 0)); // 填充矩阵 for (int i = 0; i < 3; ++i) { for (int j = 0; j < 4; ++j) { matrix[i][j] = i * j; // 示例填充 } } // 输出矩阵 for (const auto& row : matrix) { for (const auto& val : row) { std::cout << val << " "; } std::cout << std::endl; } return 0;}
图例解析:
matrix+----+----+----+----+| 0 | 0 | 0 | 0 | -> row 0+----+----+----+----+| 0 | 1 | 2 | 3 | -> row 1+----+----+----+----+| 0 | 2 | 4 | 6 | -> row 2+----+----+----+----+
4. 添加和删除行
可以通过 push_back
和 pop_back
方法来动态添加和删除行。
4.1 添加行
int main() { std::vector<std::vector<int>> matrix(3, std::vector<int>(4, 0)); // 添加新行 matrix.push_back(std::vector<int>(4, 1)); // 新行全为1 // 输出矩阵 for (const auto& row : matrix) { for (const auto& val : row) { std::cout << val << " "; } std::cout << std::endl; } return 0;}
图例解析:
matrix+----+----+----+----+| 0 | 0 | 0 | 0 | -> row 0+----+----+----+----+| 0 | 1 | 2 | 3 | -> row 1+----+----+----+----+| 0 | 2 | 4 | 6 | -> row 2+----+----+----+----+| 1 | 1 | 1 | 1 | -> row 3+----+----+----+----+
4.2 删除行
int main() { std::vector<std::vector<int>> matrix(3, std::vector<int>(4, 0)); matrix.push_back(std::vector<int>(4, 1)); // 添加新行 // 删除最后一行 matrix.pop_back(); // 输出矩阵 for (const auto& row : matrix) { for (const auto& val : row) { std::cout << val << " "; } std::cout << std::endl; } return 0;}
5. 清空 vector
使用 clear
方法可以清空 vector
中的所有元素:
int main() { std::vector<std::vector<int>> matrix(3, std::vector<int>(4, 0)); // 清空矩阵 matrix.clear(); std::cout << "矩阵大小: " << matrix.size() << std::endl; // 输出 0 return 0;}
6. 总结
在本篇文章中,我们详细介绍了如何使用 std::vector
创建和操作二维数组,包括如何添加、删除、遍历和清空矩阵。通过灵活的 vector
,我们可以方便地处理动态数组的各种需求。希望这篇文章能够帮助你深入理解 vector
的使用,提升 C++ 编程技巧!