当前位置:首页 » 《关于电脑》 » 正文

【C++】详解 `vector` 二维数组的全部操作

2 人参与  2024年10月25日 16:40  分类 : 《关于电脑》  评论

点击全文阅读


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


点击全文阅读


本文链接:http://zhangshiyu.com/post/177516.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1