我正在做的一个非常简单(和愚蠢)的抽象描述如下:
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”副本。这是我希望防止的。那么我应该通过参考回复吗? - 或者用指针?
答案 0 :(得分:0)
UncleBens确实提出了我需要找到“解决方案”的正确问题 我完全“忘记”你显然可以使用参数参考作为输出。我编辑原始的“a”而不是副本时,我不必返回任何内容。