vector的创建和初始化方法

        `vector<int> list1;`

这是默认初始化,vector为空,size为0,表明容器中没有元素,而且capacity也返回0,意味着还没有分配内存空间。这种初始化方法适用于元素个数未知,需要在程序中动态添加的情况

        `vector<int> list2(list);`
        vector<int> list2=list;

这两种方式是等价的,list2初始为list的拷贝,list必须与list2类型相同,也就是同为int的vector类型,list2将具有和list相同的容量和元素

        `vector<int> list={1,2,3.0,4,5,6,7};`
        vector<int>list{1,2,3.0,4,5,6,7};

这种情况下list初始化为列表中元素的拷贝,列表中元素必须与list的元素类型相容,本例中是与整数类型相容的拷贝,整形会直接拷贝,其他类型会进行类型转换

        `vector<int>list3(list.begin()+2,list.end()-1);`

这种情况下list3将初始化为两个迭代器指定范围中元素的拷贝,范围中的元素必须与list3的元素类型相容,在本例中list3将被初始化为(3,4,5,6)。注意:由于只要求范围中的元素类型与待初始化的容器的元素类型相容,因此迭代器来自不同的容器是可能的,例如,用一个double的list范围来初始化list3是可行的。另外由于构造函数只是读取范围中的元素进行拷贝,因此使用普通函数迭代器还是const迭代器来指出范围并没有区别。这种初始化方法特别适合于读取一个序列的子序列。

        `vector<int>list4(7);`

默认值初始化,list4中将包含7个元素,每个元素将进行缺省的值初始化,对于int,也就是被赋值为0,因此list4被初始化为包含7个0.当程序运行初期元素大致数量可预知,而元素的值需要动态获取的时候,可采用这种初始化方式。

        `vector<int>list5(7,3);`

指定值被初始化,list5将包含7个值为3的int

猜你喜欢

转载自blog.csdn.net/kking_edc/article/details/81282349