Skip to content

std::array(C++11)

一句话

一个不会退化成指针的固定大小数组,拥有 C 风格数组的性能,同时支持 size()、迭代器和赋值等标准容器接口。

头文件

#include <array>

核心 API 速查

操作签名说明
元素访问reference at(size_type pos)带边界检查的元素访问
元素访问reference operator[](size_type pos)无边界检查的元素访问
首元素reference front()访问第一个元素
末元素reference back()访问最后一个元素
底层指针T* data() noexcept直接访问底层数组指针
填充void fill(const T& value)用指定值填充所有元素
大小constexpr size_type size() noexcept返回元素个数(编译期常量)
判空constexpr bool empty() noexcept检查是否为空(N==0 时为 true)
交换void swap(array& other)交换两个数组的内容
起始迭代iterator begin() noexcept返回指向开头的迭代器

最小示例

cpp
#include <array>
#include <iostream>
// Standard: C++11
int main() {
    std::array<int, 3> arr = {1, 2, 3};
    arr.fill(0);
    arr[0] = 42;
    for (const auto& v : arr)
        std::cout << v << ' '; // 输出: 42 0 0
    std::cout << "\nsize: " << arr.size(); // 输出: size: 3
}

嵌入式适用性:高

  • 零开销抽象,编译后与 C 风格数组完全一致,不引入堆分配
  • size() 为编译期常量,可在模板元编程和静态断言中使用
  • 支持 constexpr,适合在编译期构建查找表
  • 内置边界检查的 at() 方便调试,Release 阶段可移除

编译器支持

GCCClangMSVC
4.43.119.0

另见


部分内容参考自 cppreference.com,采用 CC-BY-SA 4.0 许可

基于 VitePress 构建