标签:数据结构
-
GameplayTag 体系:层级标签的匹配为什么这么快
FGameplayTag 本质是全局注册表里的一个 32 位索引:层级关系编译期固化成父链缓存,匹配是整数比较而非字符串遍历。这篇讲注册表结构、查询机制和项目实践的坑。
-
组(Group)系统:SceneTree 里的组哈希表
add_to_group 背后是两份哈希表的双写,get_nodes_in_group 的遍历顺序由 HashSet 决定而不稳定——这篇把组系统的存储结构、开销和适用边界讲清楚。
-
Variant 的内部结构:union 加类型标签怎么装下四十多种类型
Variant 是脚本与 C++ 之间的通用货币,要在固定 24 字节里装下从 int 到 Transform3D 再到 Object 指针的 40 多种类型。这篇拆 core/variant/variant.h 的内存布局,讲清 4 字节类型标签加 16 字节 union 的取舍。
-
订单簿(Order Book)数据结构:价格档位 + 时间优先队列的工程实现
订单簿是撮合引擎的核心数据结构:买单卖单各一棵价格树,每个价格档位挂一个 FIFO 队列。这篇讲它的工程实现——为什么撤单必须 O(1)、订单索引怎么设计、五档行情怎么从同一份数据里"顺便"生成。
-
盘口(十档)数据结构:快照+增量的合并算法
客户端的十档盘口是本地维护的快照:增量消息驱动增删改,快照负责兜底恢复。这篇讲数组方案为什么够快、档位移动怎么处理、以及合并算法的完整状态机。
-
Vector/HashMap/LocalVector:Godot 为什么不用 STL
core/templates 下有一套自研容器,这篇对比 Vector、LocalVector、HashMap 与 STL 对应物的设计分歧,讲清拷贝语义、内存模型和 ABI 稳定性这三条不用 STL 的理由。