C++中的数组是与vector类似的一种数据结构,两者其实都是存储一种数据类型元素的容器。
1.数组与vector的相同点
1)都采用顺序存储的方式,可以存储任何类型的元素。
2)在访问元素方面,二者都是既可以通过下标访问,又可以通过迭代器来访问,对于迭代器访问,C++更趋向于使用迭代器而不是下标操作,因为标准库为每一种标准容器定义了一种迭代器类型,而只用少数容器支持下标操作访问容器元素。
ps:稍微提一下迭代器:
C++中的迭代器有两种,const_iterator和iterator,const_iterator只能用于读取不能修改容器内元素,下面以vector的迭代器iteration为例
vector<int> v;
vector<int>::iteration i1=v.begin();//每个容器都定义了begin,end函数来返回给迭代器,现在迭代器i1指向vector的第一个元素
vector<int>::iteration i2=v.end();//现在迭代器i2指向vector的最后一个元素
++i1 ; //给i1加1,使其指向容器的下一个元素
2.数组与vector的不同点
1)是否动态分配空间:数组是就为数组分配了固定长的空间,不可存储多于定义长度的元素。而vector的优越性在于,可以动态分配空间,vector长度不固定,可以任意增加,避免内存空间的浪费。
2)vector可以通过size()函数;来获取当前容器长度,而数组长度在定义的时候就已经确定。
3)vector可以在末尾通过push_back()加入元素,而数组不可以在超出定义长度之外的部分加入元素。
3.vector的常见用法
1.push_back 在数组的最后添加一个数据
2.pop_back 去掉数组的最后一个数据
3.begin 得到数组头的指针
4.end 得到数组的最后一个单元+1的指针
5.size 当前使用数据的大小
6.capacity 当前vector分配的大小
7.erase 删除指针指向的数据项
8.clear 清空当前的vector
9.empty 判断vector是否为空
10.sort(v.begin(),v.end()) 从小到大排序, sort 需要头文件 #include <algorithm>
11.reverse(v.begin(),v.end()) 从大到小排序