前言:
C++11中引入了array容器,array是序列容器的一种。array很类似于一般的数组,例如,array在栈上分配连续的内存来储存元素,并且array的大小是不可以改变的,这也就是说,可以修改array中元素的值,但不能向array中插入和删除元素
其次:array是原生数组的封装,它存放于栈上且大小固定,性能也与之相同。在原生数组的基础上,它添加了范围检查,以及其它的STL的相应特性,比如复制、交换、迭代器、查询大小。
初始化
Array数组没有构造函数,也没有私有或保护成员,这就意味着它不会自动初始化。如果不对其初始化而直接获取其中的值,读出来的是不确定的值。
所以我们在定义的时候就直接初始化,这样是最好的,或者用fill函数进行填充
#include <array>
using std::array;
int main()
{
//采用列表初始化
array<int, 5> arr1 = { 1, 2, 3, 4, 5 };
array<int, 5> arr2 = { 0 };
array<int,10> arr3;
arr3.fill(0); //可以用fill函数对其填充
return 0;
}
交换两个数组
array数组最有意思的就是两个具有相同类型且元素个数也一样的,可以直接交换两个数组。
如:
array<int, 5> arr1 = { 1, 2, 3, 4, 5 };
array<int, 5> arr2 = { 5, 4, 3, 2, 1 };
array<int, 5> arr3 = arr1; // arr3 包含:1 2 3 4 5
arr3 = arr2; // arr3 包含:5 4 3 2 1
//还可以用swap函数进行交换
arr1.swap(arr2);
swap(arr1,arr2);
遍历
可以用operator[]和at()对元素随机访问,两者都带范围检查。也可以直接使用迭代器,或者范围for语句。
for(int i=0;i<n;++i){
cout<<arr1[i]<<endl;
}