C ++中的QuadTree编码:指针问题

时间:2018-11-18 07:12:27

标签: c++ data-structures quadtree

我目前正在通过创建N体仿真来学习C ++。为了提高仿真中的物体数量,我尝试实现Barnes Hut逼近方法。我实际上是用C ++编写QuadTree结构的代码(请参见下文)。

为了构造我的树,我定义了三个类:

  • class Point:对应于我的模拟主体,其中x和y位置为属性
  • 类Rectangle:与具有位置和尺寸属性的我的树的叶子的属性相对应
  • QuadTree类:对应于我的QuadTree及其子对象(叶子)和一个Rectangle对象,Point对象的向量,四个叶子对象(QuadTree)和一个布尔值,用于说明是否包含叶子。

我编写了一个主要函数,其中用树定义了我的树,然后将其划分为四个叶子。然后,我使用功能void QuadTree :: get_information()查询有关我的树和关联的子树的信息。该功能允许通过显示当前树是否有子树(已划分),其树皮以及其中包含的点来显示有关当前树的一些信息。如果它有子代,则对每个子代应用函数QuadTree :: get_information(),然后重复该过程。

问题是代码给出了这样的错误:

FAIL  src/app/store/effects/router.effects.spec.ts (5.832s)
  ● Console

    console.log src/app/store/effects/router.effects.spec.ts:48
      inside subscribe?
    console.log src/app/store/effects/router.effects.spec.ts:50
      after expect
    console.log src/app/store/effects/router.effects.spec.ts:52
      after done?

  ● Router Effects › go$ › should call router.navigate with the correct path

    Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.

似乎我有分配内存的问题。我认为我不好用QuadTree类中定义的指针NW,NE,SW,SE。

我不是C ++上内存分配利用的专家,也许我犯了一个天真的错误。您是否认为管理这些指针的方式有问题?您能为我的问题提出解决方案并运行我的算法吗?

非常感谢您的宝贵时间! :)

QuadTree : Capacity =  1, Divided (0:False, 1:True) = 0
Rectangle : Center Position = (0, 0), Width = 10, Height = 10
-------------------
-------------------
QuadTree : Capacity =  1, Divided (0:False, 1:True) = 1
Rectangle : Center Position = (0, 0), Width = 10, Height = 10
 Northwest :
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted (core dumped)

0 个答案:

没有答案