Fork me on GitHub

STL—— 容器(vector)的内存分配,声明时的普通构造&带参构造

vector 的几种带参构造 & 初始化与内存分配:

 

1. 普通的带参构造:

vector 的相关对象可以在声明时通过 vector 的带参构造函数进行内存分配,如下:

 1 #include <iostream>
 2 #include <vector>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     //vector 带参构造,分配10个int空间的内存
 9     vector<int>num(10);
10 
11     cout << "num 的元素个数:" << num.size() << endl;
12     cout << "num 容器的大小:" << num.capacity() << endl;
13 
14     for (int i = 0; i < num.size(); i++)
15     {
16         cout << num[i] << endl;
17     }
18 
19 
20     return 0;
21 }

打印结果:

 

 这种情况便可以通过下标直接访问了。 

1 vector<int> num(10);
2 
3 num[0] = 1;     //可以通过下标访问
4 num[1] = 2;     

带参构造时也可以对内存的初始化,方法如下:

 1 #include <iostream>
 2 #include <vector>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     //vector 带参构造,分配10个int空间的内存,并且将值都初始化为666
 9     vector<int>num(10, 666);
10 
11     cout << "num 的元素个数:" << num.size() << endl;
12     cout << "num 容器的大小:" << num.capacity() << endl;
13 
14     num[0] = 1;
15     num[1] = 2;
16 
17     for (int i = 0; i < num.size(); i++)
18     {
19         cout << num[i] << endl;
20     }
21 
22     return 0;
23 }

打印结果:

 

 

 

2. 使用其他 vector 进行带参构造

使用其他 vector 对象当做参数进行构造,如下代码:

 1 #include <iostream>
 2 #include <vector>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     vector<int>num(10, 666);
 9     //用 num 当做参数构造 num_1
10     vector<int>num_1(num);
11     
12     num[0] = 1;
13     num[1] = 2;
14 
15     printf("num的值:\n");
16     for (int i = 0; i < num.size(); i++)
17     {
18         cout << num[i] << endl;
19     }
20     printf("num_1的值:\n");
21     for (int i = 0; i < num_1.size(); i++)
22     {
23         cout << num_1[i] << endl;
24     }
25     return 0;
26 }

打印结果:

 

 

3. 使用其他 vector 对象的迭代器进行带参构造:

 1 #include <iostream>
 2 #include <vector>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     vector<int>num(10, 666);
 9 
10     //用 num 的迭代器当做参数构造 num_1,迭代器返回的值可以进行 +  - 运算
11     vector<int>num_1(num.begin() + 5, num.end());
12     
13     num[0] = 1;
14     num[1] = 2;
15 
16     printf("num的值:\n");
17     for (int i = 0; i < num.size(); i++)
18     {
19         cout << num[i] << endl;
20     }
21     printf("num_1的值:\n");
22     for (int i = 0; i < num_1.size(); i++)
23     {
24         cout << num_1[i] << endl;
25     }
26     return 0;
27 }

打印结果:

num.begin() + 5num.end() 之间的参数对 num_1 进行构造

借用迭代器的概念,我们也可以使用数组来对 vector 进行带参构造,如下:

 1 #include <iostream>
 2 #include <vector>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int test[] = { 1,2,3,4,5 };
 9     vector<int>num(test, test + 2);
10 
11     printf("num的值:\n");
12     for (int i = 0; i < num.size(); i++)
13     {
14         cout << num[i] << endl;
15     }
16 
17     return 0;
18 }

打印结果:

 

 

 

 

 

 

=========================================================================================================================

 

posted @ 2020-04-07 10:15  索智源  阅读(388)  评论(0编辑  收藏  举报