标签:初始化 容器 int v1 二维 vector table
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都会失效。原因:内存地址变动.
标签:初始化,容器,int,v1,二维,vector,table 来源: https://blog.csdn.net/BShanj/article/details/113817328
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。