【发布时间】:2017-01-12 14:24:36
【问题描述】:
我正在创建一个四叉树,但在使用检索功能时遇到了一些问题。这个函数深入到存储对象的节点,并将对象放入一个名为relatedObjects 的向量中。 在此之后,它返回相关对象向量。但是,当它尝试这样做时,我在调试器中看到向量的元素被擦除(从 4 变为 0)。
我看不出我哪里错了。
std::vector<PTR> Tree::retrieveObjects(PTR p, std::vector<PTR> relevantObjects) {
int quadrant = getQuadrant(p);
if (quadrant != -1 && nodes[0] != nullptr)
{
nodes[quadrant]->retrieveObjects(p, relevantObjects);
}
relevantObjects.insert(relevantObjects.end(), storedObjects.begin(), storedObjects.end());
return relevantObjects; }
【问题讨论】:
-
您从递归调用中丢弃任何节点(不使用函数的返回值),还可以考虑通过引用一直向下传递向量,然后仅在顶层返回它(拆分内部来自返回向量的公共递归函数)