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

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

6 人参与  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)
  • 赞助本站

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

最新文章

  • 侯府断亲?重生嫡女惨虐全家!小说(沈清陆曜)+前传(侯府断亲?重生嫡女惨虐全家!)阅读
  • 热文推荐慕晚安陆晏霆霆爷家的小妖精又撩又飒小说大结局(霆爷家的小妖精又撩又飒)书荒必看列表
  • 岁月杳杳人不归高质量好文(裴烬野),岁月杳杳人不归高质量好文
  • 高分_等不到鬓雪相拥小说(容临渊云朝朝)(等不到鬓雪相拥)全本完整阅读
  • 等不到鬓雪相拥后续在线列表_等不到鬓雪相拥后续在线(云朝朝容临渊)
  • 完结文铁马冰河入梦来完结文列表_完结文铁马冰河入梦来完结文(陆知栩褚明策)
  • 睁眼大婚日,我踹了渣夫抱紧金大腿(云筝厉无恙)全书浏览_睁眼大婚日,我踹了渣夫抱紧金大腿全书浏览
  • (乱世伽黎)顾承煊余芊芊乱世伽黎后续一口气无广告全书章节表
  • 全书浏览重生后联姻丈夫爱上KTV小妹我死遁了后续免费(姜满裴聿琛温舒柠)_重生后联姻丈夫爱上KTV小妹我死遁了后续免费(姜满裴聿琛温舒柠)全书结局
  • 重生后联姻丈夫爱上KTV小妹我死遁了后续免费姜满裴聿琛温舒柠完本_重生后联姻丈夫爱上KTV小妹我死遁了后续免费(姜满裴聿琛温舒柠)
  • 高考前,我拒绝再为全班求护身符免费阅读_林薇薇年年大反击_小说后续在线阅读_无删减免费完结_
  • 此前深情仅半两,裴嫣冰周松寒完本_完本此前深情仅半两,裴嫣冰周松寒

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

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