0

私はB+Treeの一般的なC++実装を書き込もうとしています。私の問題は、B+ツリーに2種類のノードがあるという事実から来ています。子ノードへのキーとポインターを含む内部ノード、およびキーと値を含むリーフノード、および内部ノードのポインターは、他の内部ノードまたはリーフノードのいずれかを指すことができます。テンプレートを使用してこのような関係をモデル化する方法がわかりません(キャストや仮想クラスを使用したくありません)。

私の問題の解決策、またはC++でB+Treeを実装するためのより良い方法があることを願っています。

4

1 に答える 1

1

最も簡単な方法:

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

boost::variantこれは、 :)を使用することでいくらか簡略化できます。

于 2010-10-16T16:39:22.743 に答える