私はクアッドツリーを作成していますが、私は検索機能でいくつかの問題を抱えています。この関数は、オブジェクトを格納するノードに到達し、そのオブジェクトをrelevantObjectsというベクトルに格納します。 この後、relatedObjectsベクトルを返します。しかし、これをしようとすると、私はデバッガでベクトルがその要素の拭き取られることがわかります(4から0になります)。クワッドツリーの再帰的な検索
私はどこが間違っているのか分かりません。あなたの再帰関数std::vector<PTR> Tree::retrieveObjects(PTR p, std::vector<PTR> relevantObjects)
で
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; }
(関数の戻り値を使用しないで)再帰呼び出しのノードを破棄した場合は、参照によってベクトルをすべて下に通してから、最上位レベルに戻すことも考慮してください(内部再帰関数をpublicから分割するベクトルを返すもの) – Borgleader