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

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

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

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

代码说明:声明一个名为table的容器,其元素为vector的容器。简单来说类似一个int型的二维数组。
这样,就得到了一个如下图所示的二维容器。
二维vector图示
具体代码的内容,可以这样理解:
在这里插入图片描述
图中,我将外围容器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都会失效。原因:内存地址变动.
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值