打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
c 之vector 及 二维容器vector<vector<int>>初始化方法 及 三维数组初始化

C 二维容器vector<vector>初始化方法解析

遇到的问题:
在解决“求最大字串”问题时想到了用二位数组vector<vector<int>> table,但是不知道怎么对其进行初始化(初始化时指定二维容器的大小),于是网上搜索一番,最终找到了如下一行代码:

vector<vector<int>> table(size1, vector<int>(size2, 0));

代码说明:声明一个名为table的容器,其元素为vector的容器。简单来说类似一个int型的二维数组。
这样,就得到了一个如下图所示的二维容器。


具体代码的内容,可以这样理解:

图中,我将外围容器table的初始化参数分成了两部分A、B。
A: table外围容器的大小
B: table外围容器的内容,即size1个vector型的元素。
B1:内部容器的大小
B2:内部容器的内容
观察规律,可以得出如下的初始化格式:
容器(大小,内容)。

推广:三维容器

将数组的二维容器的初始化推广到三维容器。
定义一个长宽高为2x3x5的立方体容器,每个元素为0,我们得到如下代码,结果编译通过。

//长宽高:2*3*5 vector<vector<vector<int>>> cube(5, vector<vector<int>>(3, vector<int>(2, 0)));

画的很简陋,随便欣赏一下。

补充内容:

1.声明一个简单int容器

vector<int> v;

2.声明一个长度为5的容器

vector<int> v(5);

3.声明一个长度为5,所有元素初始值为0的容器

vector<int> v(5,0);

4.用已有的数组初始化容器,区间:[a,a 6)

int a[6]={5,6,2,0,9,4};vector<int >  v(a,a 6);

5.用现有容器初始化一个容器

vector<int> v1(5,0);vector<int> v2(v1);

6.用迭代器初始化容器

vector<int> v1(5, 0);vector<int> v2(v1.begin(),v1.end());

杂谈:

  1. 在程序中,当再次向vector插入元素时,由于vector的容量不够,所以引起了内存的重新分配。

  2. 一旦内存重新配置,与之相关的所有的reference、pointers、iterators都会失效。原因:内存地址变动. 

来源:https://www.icode9.com/content-1-858401.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
学习C++
vector<vector<int>作为二维数组
C++ STL轻松导学
STL实践指南  作者 Jeff Bogan
STL之vector的使用
Vector向量知识
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服