在C ++中设计B + Tree模板类时出现问题

时间:2010-10-16 14:42:17

标签: c++ templates b-tree

我正在尝试编写B + Tree的通用C ++实现。我的问题来自于B +树中有两种节点;内部节点包含指向子节点的键和指针,叶节点包含键和值,内部节点中的指针可以指向其他内部节点或叶节点。 我无法想象如何使用模板建模这种关系(我不想使用强制转换或虚拟类)。

希望有一个解决我的问题的方法或在C ++中实现B + Tree的更好方法。

1 个答案:

答案 0 :(得分:1)

最简单的方法:

bool mIsInternalPointer;
union {
  InternalNode<T>* mInternalNode;
  LeafNode<T>* mLeafNode;
};

使用boost::variant:)

可以稍微简化一下