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());
杂谈:
在程序中,当再次向vector插入元素时,由于vector的容量不够,所以引起了内存的重新分配。
一旦内存重新配置,与之相关的所有的reference、pointers、iterators都会失效。原因:内存地址变动.
赞 (0)