1.简介
array是一个数组对象,里面包含了许多属性和方法。
array 容器以类模板的形式定义在 array 头文件,并位于命名空间 std
#include <array>
namespace std{
template <typename T, size_t N>
class array;
}
2.数组的定义和初始化
一维数组
- 定义格式:
array<T,N> 数组名
//T 用于指明容器中的存储的具体数据类型,N 用于指明容器的大小
注:N必须是常量,不能是变量
eg:
array<double, 10> values;
创建好了一个名为 values 的 array 容器,其包含 10 个浮点型元素。但是array不会进行初始化,所以里面的值是随机的。
- 将所有的元素初始化为 0
array<double, 10> values {};
3.array的方法
成员函数 | 功能 |
---|---|
begin() | 返回指向容器中第一个元素的随机访问迭代器。 |
end() | 返回指向容器最后一个元素之后一个位置的随机访问迭代器,通常和 begin() 结合使用 |
rbegin() | 返回指向最后一个元素的随机访问迭代器。 |
rend() | 返回指向第一个元素之前一个位置的随机访问迭代器。 |
size() | 返回容器中当前元素的数量,其值始终等于初始化 array 类的第二个模板参数 N。 |
max_size() | 返回容器可容纳元素的最大数量,其值始终等于初始化 array 类的第二个模板参数 N。 |
empty() | 判断容器是否为空,和通过 size()==0 的判断条件功能相同,但其效率可能更快。 |
at(n) | 返回容器中 n 位置处元素的引用,该函数自动检查 n 是否在有效的范围内,如果不是则抛出 out_of_range 异常。 |
fill(val) | 将 val 这个值赋值给容器中的每个元素。 |
front() | 返回容器中第一个元素的直接引用,该函数不适用于空的 array 容器。 |
back() | 返回容器中最后一个元素的直接应用,该函数同样不适用于空的 array 容器。 |
array1.swap(array2) | 交换 array1 和 array2 容器中的所有元素,但前提是它们具有相同的长度和类型 |
4.例子
#include <iostream>
//需要引入 array 头文件
#include <array>
using namespace std;
int main()
{
array<int, 4> values{};
//初始化 values 容器为 {0,1,2,3}
for (int i = 0; i < values.size(); i++) {
values.at(i) = i;
}
//使用 get() 重载函数输出指定位置元素
cout << get<3>(values) << endl;
//如果容器不为空,则输出容器中所有的元素
if (!values.empty()) {
for (auto val = values.begin(); val < values.end(); val++) {
cout << *val << " ";
}
}
}
输出:
3
0 1 2 3