117 lines
3.1 KiB
Markdown
117 lines
3.1 KiB
Markdown
# Array
|
|
|
|
**命名空间**: `XCEngine::Containers`
|
|
|
|
**类型**: `class` (template)
|
|
|
|
**描述**: 模板动态数组容器,提供自动扩容的数组实现。
|
|
|
|
## 概述
|
|
|
|
`Array<T>` 是一个模板动态数组容器,提供了类似 `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<T> 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 <XCEngine/Containers/Array.h>
|
|
|
|
// 基本用法
|
|
Containers::Array<int> arr;
|
|
arr.PushBack(1);
|
|
arr.PushBack(2);
|
|
arr.PushBack(3);
|
|
|
|
// 使用 initializer_list
|
|
Containers::Array<int> 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) - 内存分配器
|