如何读取和写入一系列项目,其中预先存在的项目可能涉及后期项目?

时间:2014-08-02 19:01:45

标签: c++ io

我在树形结构中有许多项目。我可以在树迭代中逐个读取和写入它们。但是,类Item中有引用指针,如下所示

class Item
{
    Item* m_refItem;
    ...
};

如果引用的项位于树中的引用项之前,我们可以在读写中使用引用项的索引,如下所示

void read()
{
    Index index;
    in >> index;
    m_refItem = getItem(index);
}

但是,如果引用的项位于引用项之后,则在读取引用项时,不会构造引用的项,并且getItem(index)方法会给出错误的结果。在这种情况下如何进行阅读和写作?

1 个答案:

答案 0 :(得分:2)

您可以分两个阶段完成:

  1. 读取所有节点并存储索引。
  2. 用指针替换所有索引。
  3. 代码:

    class Item {
        union {
            Item* m_refItem;
            int _index; }
        void read_phase_one(stream in) {
            in >> _index; }
        void read_phase_two(vector vect) {
            m_refItem = vect[index]; }