我很有兴趣创建游戏程序,这些程序在玩游戏时学习并保存信息以供进一步使用。例如,一个tic tac toe游戏,程序保存它赢得或丢失的evry游戏,并创建一种存储游戏信息的某种树,并在程序退出时将其保存在文件中。我遇到的问题是如何有效地保存文件中的树。有什么建议? 提前完成。
(我用c ++编程)
答案 0 :(得分:2)
一个选项是使用Boost Property Tree,它可以帮助您将树结构加载和存储到xml文件中(还支持其他几种格式)。该库已有详细记录,您可以直接在网站上找到许多示例
答案 1 :(得分:2)
您正在寻找的内容也称为序列化。 StackOverflow上有quite a few hits用于在C ++中序列化树。我建议您将JSON和YAML视为可能的格式。两者都有多个C ++库。
答案 2 :(得分:1)
我想我先尝试一下nogard的答案(我已经投了他的答案)。但是,如果您发现从运行时支持(即内存中的树)中没有获得太多价值,并且它只是真正用作序列化/反序列化机制,我建议您尝试pugixml。它是一个非常完整,高效且易于集成的xml库。
此外,为了帮助内存部分,我用简单的STL容器组成树来取得了很大的成功(它比看起来更简单)。我发现不同的树可以有不同的要求(即指向父节点的指针,没有指向父节点的指针等)如果树具有大量节点,则每个节点的这些指针可以相加。并且,如果你没有使用它们,考虑到你在树上迭代的方式,那么它只会浪费。
答案 3 :(得分:1)
如果您的树是stl容器(例如地图),那么您可以为每个元素创建一个仿函数,将其数据序列化为字符串,或直接创建文件,然后使用像{{3这样的算法 - 遍历树。这将为你调用仿函数。
这很简单。重新创建树是从文件中读取元素,将它们转换回对象并将它们添加到新的树结构中的问题。您需要将密钥保留在树中,而不仅仅是值。