防止复制结构 - 使用递归函数

时间:2011-10-21 12:01:21

标签: c++ recursion copy

我正在做的一个非常简单(和愚蠢)的抽象描述如下:

class A{
private:
    template <typename InIt>
    A foo(InIt begin, InIt end, A& a) {
        // {begin, ind}  is a datastructure containing all "terms" to search for.
        auto iter(sub.begin());
        auto e(sub.end());
        // search trough all elements in original structure.
        do
            if (FUNC) {
                if (++begin != end) {
                    return iter->foo(begin, end, a.append_values(iter));
                    //append_values appends a copy of the element's values at iter
                    //does not copy the sub "trees" of the element at "iter"
                    //it returns a reference to the appended sub "tree"
                } else {
                    return a;
                }
            }
        } while (++iter != e);
        return a;
    }
};

Sub是包含“A”类对象的向量 - 因此可以有效地创建树数据结构。 FUNC是一个函数,必须为true才能将分支“添加”到新树中。

我想知道的是:如果深度(初始开始,结束之间的差异)是“X”,那么“创建”了多少副本。 - 我担心每个深度都会创建一个新的“a”副本。这是我希望防止的。那么我应该通过参考回复吗? - 或者用指针?

1 个答案:

答案 0 :(得分:0)

UncleBens确实提出了我需要找到“解决方案”的正确问题 我完全“忘记”你显然可以使用参数参考作为输出。我编辑原始的“a”而不是副本时,我不必返回任何内容。