Qt-序列化一个树结构(大量指针)
Qt - Serializing a tree structure (a lot of pointers)
我有一个有很多指针的树结构,基本上树的一个节点就像这个
class Node
{
Node *my_father;
QVector<Node*> my_children;
... a lot of data
}
我需要所有这些指针,以便在RAM内存中使我的工作更轻松。但现在我需要将所有的树结构保存在磁盘上。。我正在考虑使用QDataStream序列化(http://www.developer.nokia.com/Community/Wiki/Qt_Object_Serialization)。。但我认为这对指针不起作用。。正确的
你建议如何将这个大结构保存在磁盘上,并在指针工作的情况下将其重新读取到RAM中?
为什么不使用XML格式?它在设计上非常容易与所有结构化数据和嵌套对象一起使用,就像您使用的树结构一样。但您不想在其中存储指针,只想存储实际数据。(存储在指针中的描述树结构的数据本身将成为XML结构,因此您不需要它们)。
然后,当您为某个节点分配新的子节点时,您需要在文件读取期间重新创建指针。
顺便说一句,很抱歉做出这个回答,不发表评论,但我还不能写问题评论;]。
显然,不能保证从磁盘读取的指针是有效的。但是您仍然可以将它们用作"整数ID",如下所示。要进行写入,请将指针与其余数据一起保存到磁盘。此外,对于每个类实例,将其自己的地址保存到磁盘。这将是该对象的"integer ID"。要读取,
1) 使用保存的整数ID信息将每个对象与其子对象和父对象相关联。最初,您可能需要将所有Node
读入一个大列表中。
2) 然后,一旦孩子、父亲在存储器中,将他们的实际地址分别写入my_father
和my_children
。
我觉得有点生气,但我想不出更直接的方法了。
相关文章:
- 如何在 C# 中映射双 C 结构指针?
- C++:映射结构中的结构指针
- C++:添加新结构时,结构指针向量中的所有元素都会更新
- 类的静态结构指针声明在C++
- 在两个.cpp文件之间定义全局类/结构指针
- 返回对常量结构(指针类型)成员的引用:明显的左值到右值转换
- 是否可以将无符号字符数组reinterpret_cast到仅包含C++中无符号字符成员的结构指针
- 如何在地图中使用结构指针
- 结构指针在"新"调用上给出已分配的地址?
- 铸造结构指针指向C 的工会指针
- c++ 结构指针在初始化为 NULL 时无法读取内存
- 函数中的结构指针的地址为0x1
- C 用结构指针初始化结构
- C 结构指针铸成数组Interop C#
- 方法中不允许访问结构指针
- 如何打印出结构指针
- MPI_Op_create:候选功能不可行.自定义结构指针不能解释为空指针
- 尝试将结构指针传递给类时出错
- 初始化结构指针的值
- 使用 pybind11 将自定义结构(指针向量)从 C++ 传递到 python 的方法是什么?