vector和数组
对于之前没有接触过vector的初学者来说,经常会把vector和数组弄混,因为二者在用的时候比较像,下面就详细的来介绍一下vector和数组的区别。
(1) 首先,vector类似于数组,有一段连续的内存,有固定的起始地址,可进行随机存取操作,即可以像数组一样用[ ]操作符进行元素的随机访问
(2) 另外,vector和数组一样,都可以存放任意对象,但除了引用,即不存在引用的数组和引用的vector。
(3) vector是一个能存放任意类型的动态数组,是动态连续空间是一种顺序的容器(vector也可以看作是向量)
数组对比vector的的缺点:
(1) 首先数组的长度必须是常量表达式,并且在初始化的时候就应该给出来。
(2) 数组之间不能够进行整体之间的复制,但是vector容器可以进行整体之间的赋值。
(3) 数组使用的时候下标容易越界,虽然vector也可以使用下标来访问容器中的数据,但是vector可以使用较多的机制来控制,比如用迭代器。
还有一点要说一下,数组名和容器名是有区别的,数组名不仅表示数组的名称,还代表了数组的首地址,数组名有时候可看作指针,并使
用一些类似于指针的操作,例如初始化了一个数组 int a[10];可进行如下操作,a+4、*(a+5)等来访问a中的数据。而容器名的话就仅仅只是
容器的名称了,它没有类似于数组名的那些操作。
最后说一下二者的使用情况,在不需要变长且容量较小的时候用array;需要变长,容量较大的时候就用vector。