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

(0)

相关推荐