第九章顺序容器(容器定义和初始化)

1.容器定义和初始化的6种方式

①vector<int> ivect1;     //默认初始化
②vector<int> ivect2(ivect1); //拷贝初始化
//vector<int> ivect2 = ivect1; //拷贝初始化
③vector<int> ivect3{0,1,2};  //列表初始化

④vector<int> ivect4(10);   //提供容器大小,容器内默认初始化
⑤vector<int> ivect5(10,1);//提供容器大小,容器内所有位置初始化为1

⑥vector<int> ivect6(ivect5.begin(), ivect5.end()); //迭代器初始化


2.方法②vector<int> ivect2(ivect1); 完全拷贝的方式,有严格限制

  要求ivect2和ivect1的容器类型vector还有数据类型int ,必须完全一致。

 

3.方法⑥vector<int> ivect6(ivect5.begin(), ivect5.end()); 迭代器拷贝的方式,限制要少一些

举例:通过ivec7初始化ilist1

vector<int> ivec7(10); 

list<float> ilist1(ivec7.begin(),ivec7.end());  //前者是vector后者是list。数据类型由int转化为float。

首先容器类型可以不一致,其次数据类型如果可以相互转化,也没有问题。

还有一点需要注意的是,可以改变迭代器的指向,截取部分数据进行拷贝

4.通过④vector<int> ivect4(10);   //提供容器大小,容器内默认初始化

通过上面的方法来进行初始化,有个前者条件。就是容器内是内置数据类型,或者是具有默认构造函数的类类型。(因为方法4会调用后者的构造函数)

5. 容器array

 array<int,10> arr1;  //大小也是array属性的一种;这里通过默认初始化,数组里面全是0

array<int,10> arr2 = {1,2}; //剩余8个位置全部补0

array<int,10> arr2 = {1,2,3,4,5,6,7,8,9,10}; //初始化为1到10

数组不支持直接拷贝

但是数据类型和大小相同的array容器支持

 

 

posted @ 2023-05-01 18:14  嵌入式新手  阅读(25)  评论(0)    收藏  举报