Проблема при разработке шаблонного класса B + Tree в C ++ - PullRequest
0 голосов
/ 16 октября 2010

Я пытаюсь написать общую реализацию C ++ для B + Tree. Моя проблема связана с тем, что в B + Tree есть два вида узлов; внутренние узлы, которые содержат ключи и указатели на дочерние узлы, и конечные узлы, которые содержат ключи и значения, и указатели во внутреннем узле могут указывать либо на другие внутренние узлы, либо на конечные узлы. Я не могу понять, как смоделировать такие отношения с помощью шаблонов (я не хочу использовать приведения или виртуальные классы).

Надеюсь, что есть решение моей проблемы или лучший способ реализовать B + Tree в C ++.

1 Ответ

1 голос
/ 16 октября 2010

Самый простой способ:

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

Это можно несколько упростить, используя boost::variant:)

...