类模板
<array>

std::array

template < class T, size_t N > class array;
数组类
数组是固定大小的序列容器:它们持有特定数量的、以严格线性序列排序的元素。

在内部,一个数组除了它包含的元素外,不保存任何其他数据(甚至不包括它的大小,因为大小是一个模板参数,在编译时就固定了)。就存储大小而言,它和使用语言的方括号语法([])声明的普通数组一样高效。这个类仅仅为它添加了一个成员函数和全局函数的层,以便数组可以作为标准容器使用。

与其他标准容器不同,数组的大小是固定的,并且不通过分配器来管理其元素的分配:它们是一个封装了固定大小元素数组的聚合类型。因此,它们不能动态地扩展或收缩(对于可以扩展的类似容器,请参见 vector)。

零大小的数组是有效的,但不应对其进行解引用(成员 frontbackdata)。

与标准库中的其他容器不同,交换两个数组容器是一个线性操作,它涉及单独交换范围内的所有元素,这通常是一种效率相当低的操作。另一方面,这允许指向两个容器中元素的迭代器保持其原始的容器关联。

数组容器的另一个独特特性是它们可以被视为 tuple 对象:<array>头文件重载了 get 函数,以便可以像访问 tuple 一样访问数组的元素,同时还特化了 tuple_sizetuple_element 类型。

容器属性

序列
序列容器中的元素以严格的线性序列排序。单个元素通过其在此序列中的位置进行访问。
连续存储
元素存储在连续的内存位置,允许对元素进行常量时间的随机访问。指向一个元素的指针可以通过偏移来访问其他元素。
固定大小聚合
该容器使用隐式的构造函数和析构函数来静态分配所需的空间。其大小是编译时常量。没有内存或时间开销。

模板参数

T
所含元素的类型。
别名为成员类型array::value_type.
N
数组的大小,以元素数量计。
array成员函数的参考文档中,假定模板参数使用这些相同的名称。

成员类型

以下别名是array的成员类型。它们被成员函数广泛用作参数和返回类型。

成员类型定义说明
value_type第一个模板参数 (T)
引用value_type&
const_referenceconst value_type&
指针value_type*
const_pointerconst value_type*
iterator一个指向value_type随机访问迭代器,可转换为const_iterator
const_iterator一个指向const value_type
reverse_iteratorreverse_iterator<iterator>
const_reverse_iteratorreverse_iterator<const_iterator>
size_typesize_t无符号整型
difference_typeptrdiff_t有符号整型

成员函数

迭代器


容量


元素访问


修改器


非成员函数重载


非成员类特化