首先,问题由vector和数组的数据引用格式类似引出。由array[i],vector[i]产生疑问,数组和vector的赋值方式类似吗?是不是有别的共同点呢?最后结论:除了各自的引用有一种恰巧外形类似,别的方面基本没有共同点。详细资料如下:
简要回顾一下array数组和vector(姑且称之向量)的部分基础:
一、Array与Vector
1.Array
Array,是一种内置类型,存放在由系统“栈”中,由系统执行对应内存的分配与释放。
Array的类型:int[维度]。array的类型不是简单的类型标识符,而是类型+[维度]组合而成的特殊类型。
Array的引用:array[i],i表示希望引用的数据在数组中对应的位置,由0开始查询。
Array的初始化:从概念上讲,Array使用前必须指定其类型与大小,初始化时形式上可以不指定,但本质上是由系统计算并使用对应类型的初值填充。如:int[] = {1};int[2] = {1};
访问Array数组元素:a[],括号内维度不可越界。
2.vector
vector,是一种类模板,存放在“堆”找那个,由标准模板库中的程序负责内存的分配和释放,操作简单。
vector的类型:为定义时vector <>中<>内的类型,vertor的大小可以变化。
vector的大小:可以通过push_back或者pop对vector的大小进行变化。
vector的初始化:①默认初始化,vector<int> ilist1,size和capacity都为0,需要之后使用时添加。
②拷贝赋值初始化:vector<int> ilist2(ilist); vector<int> ilist2 = ilist; 首先ilist与ilist2的类型需要一致,赋值完成时ilist2将具有与ilist一样的容量与元素。
③列表赋值法vector<int> ilist = {1,2,3.0,4,5,6,7}; vector<int> ilist {1,2,3.0,4,5,6,7}; 需要注意花括号中的值类型是否与尖括号中的类型保持一致。
④默认值初始化,vector<int> ilist(7,3); 意为名为ilist的vector被初始化成功,并拥有了七个类型为int值为3的元素。
3.数组与vector的区别
①内存的存放位置及分配与释放区别
②大小是否固定
③初始化方式
④执行效率。因为vector在拓宽内存时需要消耗大量companity