std::array 定义于头文件
此容器是一个聚合类型,其语义等同于一个C风格的数组T[N]作为其唯一非静态数据成员的结构体,不同于C风格的数组,它不可以利用 指针直接存取数据即不能转化为T*,但是像其他容器一样,可以通过迭代器进行遍历。该结构体结合了 C 风格数组的性能、可访问性与容器的优点,比如可获取大小、支持赋值、随机访问迭代器等。当其长度为零时 array ( N == 0 )有特殊情况。此时, array.begin() == array.end() ,并拥有某个唯一值。在零长 array 上调用 front() 或 back() 是未定义的。
其成员类型有:
| 成员类型 | 定义 |
|---|---|
| value_type | T |
| size_type | std::size_t |
| difference_type | std::ptrdiff_t |
| reference | value_type& |
| const_reference | const value_type& |
| pointer | value_type* |
| const_pointer | const value_type* |
| iterator | 遗留随机访问迭代器 (LegacyRandomAccessIterator) 兼常量表达式迭代器 (ConstexprIterator) (C++20 起)且为字面类型 (LiteralType) (C++17 起) |
| const_iterator | 常随机访问迭代器兼常量表达式迭代器 (ConstexprIterator) (C++20 起)且为字面类型 (LiteralType) (C++17 起) |
| reverse_iterator | std::reverse_iterator |
| const_reverse_iterator | std::reverse_iterator |
member function有:
| 隐式定义的成员函数 | |
|---|---|
| (构造函数) (隐式声明) | 遵循聚合初始化的规则初始化 array (注意默认初始化可以导致非类的 T 的不确定值) (公开成员函数) |
| (析构函数) (隐式声明) | 销毁 array 的每个元素 (公开成员函数) |
| operator= (隐式声明) | 以来自另一 array 的每个元素重写 array 的对应元素 (公开成员函数) |
| 元素访问 | |
| at | 访问指定的元素,同时进行越界检查 (公开成员函数) |
| operator[] | 访问指定的元素 (公开成员函数) |
| front | 访问第一个元素 (公开成员函数) |
| back | 访问最后一个元素 (公开成员函数) |
| data | 返回指向内存中数组第一个元素的指针 (公开成员函数) |
| 迭代器 | |
| begin cbegin | 返回指向起始的迭代器 (公开成员函数) |
| end cend | 返回指向末尾的迭代器 (公开成员函数) |
| rbegin crbegin | 返回指向起始的逆向迭代器 (公开成员函数) |
| rend crend | 返回指向末尾的逆向迭代器 (公开成员函数) |
| 容量 | |
| empty | 检查容器是否为空 (公开成员函数) |
| size | 返回容纳的元素数 (公开成员函数) |
| max_size | 返回可容纳的最大元素数 (公开成员函数) |
| 操作 | |
| fill | 以指定值填充容器 (公开成员函数) |
| swap | 交换内容 (公开成员函数) |
示例代码如下:
1 |
|