第九章顺序容器(容器定义和初始化)
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容器支持

浙公网安备 33010602011771号