我想做一个比st_tree更好的树

时间:2018-06-04 04:56:35

标签: c++ templates data-structures tree

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。

0 个答案:

没有答案