# Array **命名空间**: `XCEngine::Containers` **类型**: `class` (template) **描述**: 模板动态数组容器,提供自动扩容的数组实现。 ## 概述 `Array` 是一个模板动态数组容器,提供了类似 `std::vector` 的功能,但针对游戏引擎进行了优化。 ## 类型别名 | 别名 | 类型 | 描述 | |------|------|------| | `Iterator` | `T*` | 迭代器类型 | | `ConstIterator` | `const T*` | 常量迭代器类型 | ## 公共方法 ### 构造/析构 | 方法 | 描述 | |------|------| | `Array() = default` | 默认构造函数 | | `explicit Array(size_t capacity)` | 指定容量的构造函数 | | `Array(size_t count, const T& value)` | 初始化列表构造函数 | | `Array(std::initializer_list init)` | initializer_list 构造 | | `~Array()` | 析构函数 | ### 拷贝/移动构造 | 方法 | 描述 | |------|------| | `Array(const Array& other)` | 拷贝构造函数 | | `Array(Array&& other) noexcept` | 移动构造函数 | | `Array& operator=(const Array& other)` | 拷贝赋值运算符 | | `Array& operator=(Array&& other) noexcept` | 移动赋值运算符 | ### 元素访问 | 方法 | 描述 | |------|------| | `T& operator[](size_t index)` | 下标访问 | | `const T& operator[](size_t index) const` | 常量下标访问 | | `T* Data()` | 获取原始数据指针 | | `const T* Data() const` | 获取常量数据指针 | | `T& Front()` | 获取第一个元素 | | `const T& Front() const` | 获取常量第一个元素 | | `T& Back()` | 获取最后一个元素 | | `const T& Back() const` | 获取常量最后一个元素 | ### 容量管理 | 方法 | 描述 | |------|------| | `size_t Size() const` | 获取元素数量 | | `size_t Capacity() const` | 获取容量 | | `bool Empty() const` | 检查是否为空 | | `void Clear()` | 清空所有元素 | | `void Reserve(size_t capacity)` | 预留容量 | | `void Resize(size_t newSize)` | 调整大小 | | `void Resize(size_t newSize, const T& value)` | 调整大小并填充默认值 | ### 元素操作 | 方法 | 描述 | |------|------| | `void PushBack(const T& value)` | 尾部添加(拷贝) | | `void PushBack(T&& value)` | 尾部添加(移动) | | `T& EmplaceBack(Args&&... args)` | 就地构造尾部添加 | | `void PopBack()` | 尾部移除 | ### 迭代器 | 方法 | 描述 | |------|------| | `Iterator begin()` | 获取开始迭代器 | | `Iterator end()` | 获取结束迭代器 | | `ConstIterator begin() const` | 获取常量开始迭代器 | | `ConstIterator end() const` | 获取常量结束迭代器 | ### 内存分配器 | 方法 | 描述 | |------|------| | `void SetAllocator(Memory::IAllocator* allocator)` | 设置内存分配器 | ## 使用示例 ```cpp #include // 基本用法 Containers::Array arr; arr.PushBack(1); arr.PushBack(2); arr.PushBack(3); // 使用 initializer_list Containers::Array arr2 = {1, 2, 3, 4, 5}; // 迭代 for (auto& elem : arr) { printf("%d\n", elem); } // 使用 EmplaceBack arr.EmplaceBack(4); ``` ## 相关文档 - [HashMap](./container-hashmap.md) - 哈希表容器 - [Memory 模块](../memory/memory-overview.md) - 内存分配器