在 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++ 编程技巧!