在https://github.com/erikerlandson/st_tree,你会找到一个很好的模板来创建树,例如你可以写:
tree<string, ordered<> > t;
t.insert("A");
// Insert strings at ply 1
node_iterator c = t.root().insert("C");
t.root().insert("B");
t.root().insert("D");
// Insert strings at ply 2
c->insert("F");
c->insert("E");
您可以在有序(使用多集),原始(使用向量)和键控节点(使用映射)之间进行选择,每个节点都包含一些数据,这些数据也是有序和有键节点的关键。无法创建具有混合类型节点的树。我想制作一个替代模板,其中节点并不总是有数据,但仅仅是一些孩子的持有者,也允许一些混合。一个简化的例子可能是:
tree t;
t.iterator it=t.insert(new node<raw_no_data<>>);
t.iterator it2=it->insert(new node<ordered_no_data<string>>); //indicating that its childs
//data should be string;
t.iterator it3=it->insert(new node<keyed_no_data<string>>);
it2->insert(new node<leave,string>(“B”));
it3->insert(new node<leave_key,string,int>(“D”,5));
node_base &n1=t[0].find(“B”); //looking in multiset
node_base &n2=t[1].find(“D”); //looking in map
换句话说,在更一般的情况下,我想要选项来访问这样的节点: MYNODE = T [2] [0] [ “猫”] [1]; 其中树是有序节点和原始节点的混合,并且我们没有原始节点的子节点的_data。 这样的事情是否已经作为开源存在?如果没有,我会尝试制作这样一个项目并将其上传到GitHub。