用于存储自定义对象/数据类型的通用B树

时间:2017-10-31 06:11:14

标签: c++ data-structures

我想要一个B-Tree,它可以存储任何类型的数据。甚至可能是自定义对象和数据类型。例如:我可能存储一些整数,一些字符串(“ex:jack,jill等)甚至一些自定义对象(MyClass obj1,obj2等)。

我想知道的是,如何插入/删除/搜索对象并维护树?我可以使用比较操作来表示整数,但是其他类型如字符串,自定义对象等呢?

我也想知道,设计课程的最佳方法是什么?我可以想到两个选择:

  1. 我使用类模板并为每个模板编写专门化。这真的很麻烦,对我来说最不可取。

  2. 我使用虚拟get / set方法为树节点使用抽象基类。每个节点都有一个唯一的整数“key”属性,可用于Tree ops中的比较。我的所有数据类型必须派生自此类。在这种情况下,我可以编写一个compare()来比较键。我在这里看到的一个重大缺点是维护键,这需要像堆栈一样的另一个ds。

  3. 请告诉我您对未来最佳方式的看法。在此先感谢!!

1 个答案:

答案 0 :(得分:0)

节点中的

声明如下的void指针。您可以在哪里存储任何类型的地址。但是在搜索树时,你必须检查每种类型,

void* val;

node->val = pointer of a int //ok
node->val = pointer of a char//ok
node->val = pointer of a object including user define type//ok