【发布时间】:2012-02-24 15:12:18
【问题描述】:
我将把国际象棋游戏表示为 C++ 结构。我认为,最好的选择是树形结构(因为在每个深度我们都有几个可能的移动)。
这是一个好方法吗?
struct TreeElement{
SomeMoveType move;
TreeElement *parent;
std::vector<TreeElement*> children;
};
如何高效地将此类数据存储在文件中?有没有办法确保整个树结构将存储在内存的同一部分,这将允许使用 mmap 功能?
【问题讨论】:
-
如果不以某种方式对其进行序列化,就无法将该结构保存到文件中,因为它包含指针并使用
vector。 -
这是三个非常广泛且非常不同的问题,合而为一。请不要那样做。
-
我会尝试命名节点(仅使用指针值)并在深度优先顺序搜索中遍历树,这样您可以生成有序的一维数组,例如:[{node:1 ,move:..,parent:0},{node:2,move:..,parent:1},{node:3,move:..,parent:2},{node:4,move:.. ,父:3}]