C++官网参考链接:https://cplusplus.com/reference/array/array/
类模板
std::array
template < class T, size_t N > class array;
数组类
数组是固定大小的顺序容器:它们按严格的线性顺序保存特定数量的元素。
在内部,数组除了它包含的元素之外不保留任何数据(甚至它的大小,这是一个模板形参,在编译时固定)。就存储大小而言,它与使用该语言的括号语法([])声明的普通数组一样高效。该类只是向其添加了一层成员函数和全局函数,以便将数组用作标准容器。
与其他标准容器不同,数组具有固定的大小,并且不通过分配器管理其元素的分配:它们是封装固定大小的元素数组的聚合类型。因此,它们不能动态地展开或收缩(有关可以展开的类似容器,请参阅vector)。
大小为0的数组是有效的,但不应该解引用它们(成员front、back和data)。
与标准库中的其他容器不同,交换两个数组容器是一种线性操作,涉及分别交换范围中的所有元素,这通常是一种效率相当低的操作。另一方面,这允许两个容器中元素的迭代器保持它们原始的容器关联。
数组容器的另一个独特特性是,它们可以被视为元组(tuple)对象:
容器的属性
按顺序排列
顺序容器中的元素按照严格的线性顺序排列。各个元素通过它们在该序列中的位置进行访问。
连续存储
元素存储在连续的内存位置,允许对元素进行恒定时间的随机访问。指向一个元素的指针可以被偏移以访问其他元素。
固定大小的集合
容器使用隐式构造函数和析构函数静态分配所需的空间。它的大小是编译时常数。没有内存或时间开销。
模板形参
T
所包含元素的类型。
别名为成员类型array::value_type。
N
数组的大小,以元素的数量表示。
在array成员函数的引用中,假定模板形参具有相同的名称。
成员类型
以下别名是array的成员类型。它们被广泛用作成员函数的形参和返回类型:
member type | definition | notes |
---|---|---|
value_type | The first template parameter (T) | |
reference | value_type& | |
const_reference | const value_type& | |
pointer | value_type* | |
const_pointer | const value_type* | |
iterator | a random access iterator to value_type | convertible to const_iterator |
const_iterator | a random access iterator to const value_type | |
reverse_iterator | reverse_iterator | |
const_reverse_iterator | reverse_iterator | |
size_type | size_t | unsigned integral type |
difference_type | ptrdiff_t | signed integral type |
成员函数
迭代器
begin Return iterator to beginning (public member function)
end Return iterator to end (public member function)
rbegin Return reverse iterator to reverse beginning (public member function)
rend Return reverse iterator to reverse end (public member function)
cbegin Return const_iterator to beginning (public member function)
cend Return const_iterator to end (public member function)
crbegin Return const_reverse_iterator to reverse beginning (public member function)
crend Return const_reverse_iterator to reverse end (public member function)
容量
size Return size (public member function)
max_size Return maximum size (public member function)
empty Test whether array is empty (public member function)
元素访问
operator[] Access element (public member function)
at Access element (public member function)
front Access first element (public member function)
back Access last element (public member function)
data Get pointer to data (public member function)
修改器
fill Fill array with value (public member function)
swap Swap content (public member function)
非成员函数重载
get (array) Get element (tuple interface) (function template)
relational operators (array) Relational operators for array (function template)
非成员类特殊化
tuple_element
tuple_size