STL array
template <class T, size_t N> array;
介绍
arrays是固定的s序列容器,它盛放特定数目的按现行顺序排列的序列。
在内部,arrays的成员只s有它盛放的元素,(甚至没有它的尺寸,这是在编译时就固定下来的)就存储的尺寸而言,它与用标准语法[]声明的数组一样有效,这个类仅仅对它添加了一层成员和全局函数,因此可被用作标准容器。
不像其他的标准容器,arrays有一个固定的尺寸而且不适用分配器来管理元素的内存分配:它们是合并的类型包含在一个固定尺寸的数组中。因此,它们不能被动态的扩张或合并。
尺寸为0的arrays是允许的,但是不能读取元素。
不像标准库中的其它容器,交换arrays中的两个元素是一个线性操作(需要依次交换范围中的每个元素)。另一方面,这允许了两个容器的迭代器可以保持关联(这句话不太懂)。
另一个独特的特点是arrays可以像元组一样对待,< array >头文件重载了get函数来像元素一样获取arrays中的元素,而且指定了tuple_size和tuple_element两个类型。
容器属性
-
顺序性
容器中的每个元素按照严格的线性顺序排序,通过位置来读取每个元素的值。 -
连续存储
arrays中的元素被存储在连续的内存空间中,使得元素的随机读取操作为常数时间,一个元素的指针也可以用作读取元素的偏移量。 -
固定尺寸
容器使用内含的构造函数和析构函数静态的分配空间,它的尺寸在编译时确定为一个常量,没有内存和时间开销。
模板参数
T: 内部元素的类型,别名为array::value_type
N: array的尺寸,元素的个数。
成员类型
下面的别名是array成员的类型,它们被广泛用作成员函数的参数和返回值。
成员类型 | 定义 | 备注 |
---|---|---|
value_type | 第一个模板参数 | |
reference | value_type& | |
const reference | const value_type& | |
poiter | value_type* | |
const poiter | const value_type* | |
iterator | 一个对value_type的随机读取迭代器 | 可转换为const iterator |
reverse_iterator | reverse_iterator< iterator > | |
const reverse_iterator | const reverse_iterator< iterator > | |
size_type | size_t | 无符号整型 |
difference_type | ptrdiff_t | 有符号整型 |
成员函数
迭代器
begin() end() rbegin() rend() cbegin() cend() crbegin() crend()
容量
size()
max_size()
empty()
成员读取
operator[]
at()
front()
back()
data()
元素操作
void fill(const value_type&)
void swap (array& x) noexcept(noexcept(swap(declval<value_type&>(),declval<value_type&>())));