我目前正在通过创建N体仿真来学习C ++。为了提高仿真中的物体数量,我尝试实现Barnes Hut逼近方法。我实际上是用C ++编写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)