通用B树,用于存储自定义对象/数据类型
Generic B-Tree to store custom objects/data types
我想要一个B树,它可以存储任何类型的数据。甚至可以自定义对象和数据类型。例如:我可能会存储一些整数、一些字符串(例如:jack、jill等),甚至一些自定义对象(MyClass obj1、obj2等)
我想知道的是,我如何插入/删除/搜索对象并维护树?我可以对整数使用比较操作,但其他类型(如字符串、自定义对象等)呢?
我也想知道,设计我的课程最好的方法是什么?我能想到两种选择:
-
我使用一个类模板并为每个模板编写专门化。这真的很麻烦,对我来说最不可取。
-
我为Tree Node使用了一个带有虚拟get/set方法的抽象基类。每个节点都有一个唯一的整数"key"属性,可用于树操作中的比较。我的所有数据类型都必须从此类派生。在这种情况下,我可以编写一个compare()来比较键。我在这里看到的一个大缺点是密钥的维护,这需要像堆栈一样的另一个ds。
请告诉我您对最佳前进方式的看法。提前感谢!!
在节点中声明一个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
相关文章:
- 自定义对象的dlib序列化在gcc中失败
- 如何将带有自定义对象的容器从C++传递到QML
- 如何使用Q_PROPERTY公开自定义对象列表
- 如何在自定义对象的<<运算符中添加自定义前缀
- 将自定义对象作为参数从目标 C 传递到 C++
- 使用自定义对象声明shared_ptr数组时出现错误 C2664
- 在具有自定义对象的集合中查找值
- std::set 不会检测到重复的自定义对象
- 如何使用自定义对象的序列化在 c++ 中编写自定义二进制文件处理程序
- std::排序为排序自定义对象时出现的向量引发错误
- 具有自定义对象的C 优先级队列
- 自定义对象构造函数在循环外部循环
- 带有自定义对象的C 范围循环
- 如何正确地将规则 5(或零?)应用于包含带有字符串的自定义对象向量的类
- 如何在包含自定义对象的容器中使用分区函数C++
- 如何在具有多个成员的自定义对象的向量上使用查找
- std::vector 如何支持未知大小的自定义对象的连续内存
- 将指针的QVECTOR分类到自定义对象
- (C )正在创建专门用于处理所有其他自定义对象的类/对象一种处理项目的正确方法
- C soci查询到自定义对象的向量