特点
- 定长数组容器(编译期已知大小)
- 与
std::vector 不同,std::array 的大小在编译时确定,不能动态改变。
- 底层仍是连续内存(可与 C 接口兼容)。
- 支持 STL 容器接口
- 提供
begin()、end()、size()、at()、fill() 等函数。
- 能配合算法库使用(如
sort()、for_each() 等)。
- 比原生数组更安全
- 提供
at() 成员函数,有越界检查(抛出 std::out_of_range)。
- 支持迭代器访问与容器通用操作。
- 适合替代
T arr[N] 场景
- 能用于标准容器函数模板中。
- 可用作容器元素(
array<array<int, 3>, 3>)。
初始化方法
1. 列表初始化
std::array<int, 3> arr = {1, 2, 3};
2. 部分初始化 + 默认补零
std::array<int, 4> arr = {1, 2}; / arr = {1, 2, 0, 0}
3. 使用 fill() 方法(运行时填充)
arr.fill(7); // 全部赋值为 7
4. 默认构造(仅适用于基础类型,值未定义或为 0)
std::array<int, 5> arr; // 未显式初始化,值未定义(有时为 0)
成员函数表
| 成员函数 |
参数形式 |
返回值类型 |
功能说明 |
at(i) |
size_t i |
T& / const T& |
访问元素,有越界检查(抛异常) |
operator[](i) |
size_t i |
T& / const T& |
访问元素,无越界检查(更快) |
front() |
无 |
T& / const T& |
返回首元素引用 |
back() |
无 |
T& / const T& |
返回末元素引用 |
size() |
无 |
size_t |
返回容器大小(固定) |
max_size() |
无 |
size_t |
返回最大可容纳元素个数(与 size() 相同) |
empty() |
无 |
bool |
若数组大小为 0 则返回 true |
fill(val) |
const T& val |
void |
将所有元素设置为指定值 |
swap(other) |
array<T, N>& other |
void |
与另一个 array 内容交换(元素逐个交换) |
迭代器函数表
| 函数名 |
返回类型 |
说明 |
begin() |
iterator |
指向首元素 |
end() |
iterator |
指向尾后元素(N) |
rbegin() |
reverse_iterator |
反向起始迭代器 |
rend() |
reverse_iterator |
反向末尾后迭代器 |
cbegin() |
const_iterator |
常量版本 begin |
cend() |
const_iterator |
常量版本 end |
crbegin() |
const_reverse_iterator |
常量反向起始迭代器 |
crend() |
const_reverse_iterator |
常量反向末尾迭代器 |
成员函数详解
1. at(size_t index) 访问元素(带边界检查)