数组中的c++树

c++ tree within an array

本文关键字:c++ 数组      更新时间:2023-10-16

我正在尝试制作一个包含展开树的数组。我试过了:

SplayTree<Node> splayArray[];

然后用初始化

splayArray[10];

然而,当我尝试插入使用:

splayArray[0].insert(nodeObject);

它不起作用,我一直收到这个错误:

0xC0000005: Access violation reading location 0x00000018

请注意,如果我只制作一个展开树并在其中插入节点,一切都会很好。

此处为

splayArray[10];

您不是在初始化,而是在访问。

你应该改为这样写:

SplayTree<Node> splayArray[10]; // Here goes the size of the array
splayArray[0].insert(nodeObject);

数组必须在声明时知道它们的大小,或者在初始化时计算它们(例如int array[] = { 42 }; // array of size 1)。

编辑

关于您的评论,请将其放在您的头文件中:

extern SplayTree<Node> splayArray[10];

然后将其放在.cpp文件的全局范围中:

SplayTree<Node> splayArray[10];

然后在一个函数中,这取决于你在正确的时间调用它:

splayArray[0].insert(nodeObject);