我正在构建一个二叉搜索树。作为通用人员,我希望允许所有类型都能够充当树中节点的密钥。替代模板变量?
于是我想出了以下内容:
class foo
{
private:
template<class T>
struct node
{
T key;
node* left;
node* right;
};
node<>* _root; //point of interest
public:
//.....
template<class T>
void insert(const T& key);
};
当我插入节点到树,我可以根据key
类型,来创建节点对象,但我不知道如何申报_root
这样(当在空树上使用insert
时,我可以很容易地选择_root
的类型)。
我相信C++ 14的模板变量可以帮助我,但不幸的是MSVC的编译器还没有实现该功能。
问题:如何以最一般的方式减少_root
?人们过去如何做到这一点?
你是过度概括。请将作为foo的模板参数,因为无论如何,您的节点只能属于某个类型。 –
SergeyA
澄清:你想要一个*单个树*能够拥有多种不同类型的密钥? – immibis
你有没有想过如何实现这一点?如果你不知道它们的类型,应该如何比较密钥等?请记住,编译时需要知道类型。 – Kevin