/** * @file Utilities.h * @brief 公共容器与工具模块聚合入口。 * @details * 通过编译开关统一切换 STL 与自定义容器实现,并集中导出: * - vector/deque 等基础容器别名; * - erase_unordered 辅助函数; * - FreeList 等常用数据结构头文件。 */ #pragma once /** * @brief 是否使用 STL vector 作为基础容器。 */ #define USE_STL_VECTOR 0 /** * @brief 是否启用 STL deque 别名。 */ #define USE_STL_DRQUE 1 #if USE_STL_VECTOR #include #include namespace XEngine::utl { template using vector = std::vector; /** * @brief 通过交换尾元素方式无序删除。 * @tparam T 容器类型。 * @param v 目标容器。 * @param index 删除下标。 */ template void erase_unordered(T& v, size_t index) { if (v.size() > 1) { std::iter_swap(v.begin() + index, v.end() - 1); v.pop_back(); } else { v.clear(); } } } #else #include "Vector.h" namespace XEngine::utl { /** * @brief 调用自定义容器的无序删除接口。 * @tparam T 容器类型。 * @param v 目标容器。 * @param index 删除下标。 */ template void erase_unordered(T& v, size_t index) { v.erase_unordered(index); } } #endif #if USE_STL_DRQUE #include namespace XEngine::utl { template using deque = std::deque; } #endif namespace XEngine::utl { } #include "FreeList.h"