概念
array 容器是 C++ 11 标准中新增的序列容器,简单地理解,它就是在 C++ 普通数组的基础上,添加了一些成员函数和全局函数。在使用上,它比普通数组更安全
array 容器的大小是固定的,无法动态的扩展或收缩,只允许访问或者替换存储的元素。
注意:array的使用要在std命名空间里
初始化array对象
array<T,n> a;//声明一个大小为n的T型数组
array<T,n> a{};//在上一条的基础上将每一位都置为0
array<T,n> a{1,2,3};//声明一个大小为n的T型数组,初始化部分值,其余全部为0
array<T,n> a = {1,2,3};与上一条同理
array的遍历方式:1.数组下标。2.迭代器(逆向迭代器)。3.at函数。4.get方法
#include <iostream>
#include <array>
using namespace std;
int main()
{
array<int, 4> a = { 1, 2, 3, 4 };
// 数组下标方式遍历vector
for (int i = 0; i < a.size(); i++)
{
//cout << get<i>(a);//错误
cout << a[i] << " ";
}
cout << endl;
// 迭代器方式遍历vector
array<int, 4>::iterator itor = a.begin();
for (; itor != a.end(); itor++)
cout << *itor << " ";
cout << endl;
//set()方式
for (int i = 0; i < a.size(); i++)
cout << a.at(i) << " ";
cout << endl;
//get()方法
cout << get<0>(a) << " " << get<1>(a) << " " << get<2>(a) << " " << get<3>(a) << " ";
return 0;
}
注意:get中填写的数字是下标值,并且只能写数字,不能填变量
常用函数
array1.begin():返回容器中第一个元素的访问迭代器(地址)
array1.end():返回容器最后一个元素之后一个位置的访问迭代器(地址)
array1.rbegin():返回最后一个元素的访问迭代器(地址)
array1.rend():返回第一个元素之前一个位置的访问迭代器(地址)
array1.size():返回容器中元素的数量,其值等于初始化 array 类的第二个模板参数N
array1.max_size():返回容器可容纳元素的最大数量,其值始终等于初始化 array 类的第二个模板参数 N
array1.empty():判断容器是否为空 at(n) 返回容器中 n 位置处元素的引用,函数会自动检查 n 是否在有效的范围内,如果不是则抛出 out_of_range 异常
array1.front():返回容器中第一个元素的直接引用,函数不适用于空的 array 容器
array1.back():返回容器中最后一个元素的直接引用,函数不适用于空的 array 容器。
array1.data():返回一个指向容器首个元素的指针。利用该指针,可实现复制容器中所有元素等类似功能
array1.fill(x):将 x 这个值赋值给容器中的每个元素,相当于初始化
array1.swap(array2):交换 array1 和 array2 容器中的所有元素,但前提是它们具有相同的长度和类型