我正在尝试编写B + Tree的通用C ++实现。我的问题来自于B +树中有两种节点;内部节点包含指向子节点的键和指针,叶节点包含键和值,内部节点中的指针可以指向其他内部节点或叶节点。 我无法想象如何使用模板建模这种关系(我不想使用强制转换或虚拟类)。
希望有一个解决我的问题的方法或在C ++中实现B + Tree的更好方法。
答案 0 :(得分:1)
最简单的方法:
bool mIsInternalPointer;
union {
InternalNode<T>* mInternalNode;
LeafNode<T>* mLeafNode;
};
使用boost::variant
:)