实战c++中的vector系列--使用vector构造二维数组-程序员宅基地

技术标签: c++  vector  

二维数组有时候被用到,但是很少有人会使用vector来构造一个二维数组。

首先,需要明确的是,在计算机的世界中,根本不存在二维数组,只是使用者的一个概念罢了。其实我们所谓的二维数组也必须是一段连续的内存。

很多情况下,我们可以把常规的二维数组用一个vector表示,只要索引对应即可。

那么,我若一意孤行呢,我就想vector里面放一个vector呢?

#include   <iostream> 
#include   <vector> 
using namespace std;
int   main()
{
    vector <vector<int>>   array(3);
    for (int i = 0; i <3; i++)
        array[i].resize(3);
    for (int i = 0; i <3; i++)
        for (int j = 0; j <3; j++)
            array[i][j] = (i*j);

    for (int i = 0; i <3; i++)
    {
        for (int j = 0; j <3; j++)
            cout <<array[i][j] << "   ";
        cout <<endl;
    }
    array.resize(5);
    array[3].resize(3);
    array[4].resize(3);
    //现在是5X3的数组了 

    cout << endl << endl;
    for (int i = 0; i <5; i++)
        for (int j = 0; j <3; j++)
            array[i][j] = (i*j);
    for (int i = 0; i <5; i++)
    {
        for (int j = 0; j <3; j++)
            cout <<array[i][j] << "   ";
        cout <<endl;
    }
}
//输出:
0   0   0
0   1   2
0   2   4


0   0   0
0   1   2
0   2   4
0   3   6
0   4   8

就是再使用“列”的时候,需要使用vector的resize方法,否则不能使用[]进行访问的。

这里也不能用vector的reserve分配容量,原因上一篇博客已经分析过了。

其实我想说的就是,如果想要构建所谓的二维数组,最重要的就是要使用resize分配容量。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wangshubo1989/article/details/50332771

智能推荐

可靠UDP,KCP协议快在哪?-程序员宅基地

文章浏览阅读71次。WeTest 导读云真机已经支持手机端的画面投影。云真机实时操作,对延迟的要求比远程视频对话的要求更高(100ms以内)。在无线网络下,如何更实时、更可靠的传输视频流就成了一个挑战。通过websocket、RTMP、UDP的比较,最后选择了可靠的UDP协议KCP来进行实时音视频的传输。1 简介KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代..._udp快在哪里

Win11+VS2019编译PCL1.12含gpu过程记录_pcl flann dir-程序员宅基地

文章浏览阅读1.5k次,点赞4次,收藏9次。我想实现windows下含gpu的pcl编译,但是我失败了,我在官网的gpu集成文档中发现,pcl官方并不支持windows下的gpu集成编译这就意味着你想在windows下编译pcl的gpu版本可能需要去修改pcl的源码,这需要很强的技术能力,我还是放弃了自己编译的想法,不过在linux系统下编译含gpu的pcl是可行的,有兴趣可以转移到linux平台。据我搜集的资料来看,pcl1.8版本是有人在Windows下编译成功的,但是现在恐怕很多项目都不用这个版本的 pcl了。_pcl flann dir

PHP毕业设计 学生PHP网站模板 PHP校园二手商品网站源码 PHP MYSQL大学生动态网站毕设作品 PHP毕设网页学生成品_php大学生活网站模板-程序员宅基地

文章浏览阅读2k次。作品概述PHP学生毕业设计作品主题为校园二手商品闲置代售网站,采用PHP MYSQL制作,学生水平手写代码未基于任何框架。功能说明包括增删改查、多角色、注册登录、订单系统等,有购物车功能,涵盖一个商城的基础功能,数据库共6个数据表(商品、会员、管理员、订单、购物车)程序结构简单易懂。管理员管理员可登录后台,登陆后可以管理全部信息,例如会员、管理员、商品的增删改查等,订单修改当前状态等…会员访客可以浏览商品,注册成为会员登录后,可以购买商品、修改密码、查看订单、退出登录等…前端截图后端_php大学生活网站模板

oracle开机占很大内存,为什么我的oracle占用内存特别高?-程序员宅基地

文章浏览阅读481次。# swapinfo -tmMb Mb Mb PCTSTART/ MbTYPE AVAIL USED FREEUSED LIMIT RESERVEPRINAMEdev 4096 72 4024 2% 0 - 1/dev/vg00/lvol2reserve..._oracle sga 启动 占用

TypeError: string argument without an encoding-程序员宅基地

文章浏览阅读1.6w次,点赞4次,收藏8次。这个错误是把string 类型转byte类型的时候出现的问题下面就会报错print(bytes(str_a))_string argument without an encoding

Mybatis一对多、多对一、批量插入_mybatis一对多插入usegeneratedkeys-程序员宅基地

文章浏览阅读2.6w次,点赞14次,收藏57次。在项目开发中,我们有遇到的对象关系通常是复杂的,每个对象并不是单独的。比如学生和老师之间关系,一个老师有多个学生,每个学生会对应一个老师(这里的老师主要是班主任),这种关系其实就是一对多的关系。Mybatis在处理这种关系的时候,也是有自己的办法的。接下来就讲述一下在Mybatis中处理一对多关系的映射。1、先捋清楚学生和老师的ER模型以及数据库表数据库表中主要是在学生端的表中有一_mybatis一对多插入usegeneratedkeys

随便推点

三本建筑学与计算机专业,填报三本志愿最适合选择这三个专业,毕业后前景不输重点本科生...-程序员宅基地

文章浏览阅读588次。虽然三本院校处在本科阶段最末端的排名,但是并不代表大家选择了三本就不会比其他本科生差,那么小编今天为大家准备了这篇填报三本志愿最适合选择这三个专业,毕业后前景不输重点本科生的相关讲解,大家一定要认真学习。计算机专业计算机影响人类生活这句话相信现在每一位学生都体会到了,但是目前计算机行业依然在飞速发展中,作为一个技术性的专业工资待遇当然是比较理想的,月薪上万也属实是一个普通水平。如果三本学生将计算机..._三本建筑学没出路吗

杰里之各个IC 测试功耗表(693X-697X)_杰里 6973 pdf-程序员宅基地

文章浏览阅读2.8k次。示例:6956A:其他芯片的数据待传:文件比较大,可以多问小编!_杰里 6973 pdf

后台向前台输出 换行“\n”-程序员宅基地

文章浏览阅读775次。MVC 中后台向前台输出 “\n”总是报错因为后台向前台输出 “\n” 后,前台出现换行eg: "这里是\n换行"var str="这里是换行";这里的\n被翻译成换行,这个变量就出现问题了!可以在后台输出时把"\n"替换成 <br/>转载于:https://www.cnblogs.com/xbblogs/p/6166002.html..._数据库里存的是\n 为什么传到前台是\\n

Excel和CSV格式文件的不同之处_exelce表格是csv文件吗-程序员宅基地

文章浏览阅读7.4w次,点赞28次,收藏85次。Excel和CSV格式文件的不同之处来源:https://www.guru99.com/excel-vs-csv.htmlExcelCSV这是一个二进制文件,它保存有关工作簿中所有工作表的信息CSV代表CommaSeparatedValues。这是一个纯文本格式,用逗号分隔一系列值_exelce表格是csv文件吗

日志分析查看——grep,sed,sort,awk运用_linux日志分析常用哪些命令?awk、grep,sed,wc-程序员宅基地

文章浏览阅读519次。概述 我们日常应用中都离不开日志。可以说日志是我们在排查问题的一个重要依据。但是日志并不是写了就好了,当你想查看日志的时候,你会发现线上日志堆积的长度已经超越了你一行行浏览的耐性的极限了。于是,很有必要通过一些手段来高效地辅助你来快速的从日志中找到你要找的问题。本文通过一个从项目中衍生出来的例子从查找日志,筛选日志和统计日志3个方面层层递进来简述日志文件查看中一些有用的手段。(注_linux日志分析常用哪些命令?awk、grep,sed,wc

(整理Linux书签)——Vim命令的使用_vim 书签 操作-程序员宅基地

文章浏览阅读1.3k次。很久之前自己学习了一丢丢Linux命令,所以书签里放的杂乱无章的各种Linux知识,第一波整理::Vi是Linux的编辑器,visual interfaceVi存在三种模式,并且可以通过很多方式进行切换vim filename 打开文件,如果不存在就创建一个具有这样文件名的文件三种模式的切换在vi一个文件之后,默认进入vi的命令模式,即输入的每一个字符都表示一条命令,在_vim 书签 操作