std::array的特性
std::array是具有固定大小的数组。因此,它并不支持添加或删除元素等改变大小的操作。也就是说,当定义一个array时,除了指定元素类型,还要指定容器大小。
既然有了内置的数组,为什么还要引入array呢?
内置的数组有很多麻烦的地方,比如无法直接对象赋值,无法直接拷贝等等,同时内置的数组又有很多比较难理解的地方,比如数组名是数组的起始地址等等。相比较于如vector等容器的操作,内置数组确实有一些不方便的地方。因此,C++11就引入array容器来代替内置数组。
简单来说,std::array除了有内置数组支持随机访问、效率高、存储大小固定等特点外,还支持迭代器访问、获取容量、获得原始指针等高级功能。而且它还不会退化成指针给开发人员造成困惑。
std::array和vector比较
- array是c++11之后新加的容器类型,他比vector更加轻便。
- array的数据存储在栈中,vector的数据存储在堆中。所以
- array容器处理数据的效率更快
- vector处理数据的量更大
- vector更强大,封装的函数更多;array更轻便,更适合一些操作简单,数据量比较少的情况。
- 这就可以看出来差别了,array能存储多少,在初始化就确定了;而vector能存多少,是固定的,初始化的时候也不需要传入元素个数。
总之,vector肯定是更强大,但是强大一定会损失点东西;在数据量少的时候,并且不需要一些复杂操作的时候,可以选择array,因为它更快也更适合。
std::array的使用
使用array之前,需要包含头文件:
# include <array>
定义array时,需要指定其数据类型和大小,两者不可或缺。同时,array的大小不能使用变量来指定,但对于内置数组来说,是可以使用变量来指定数组大小的。
定义array时,可以使用{}来直接初始化,也可以使用另外的array来构造,但不可以使用内置数组来构造。