Я хочу сделать дерево лучше, чем st_tree - PullRequest
0 голосов
/ 04 июня 2018

В 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] ["cat"] [1];Где дерево - это сочетание упорядоченных и необработанных узлов, и где у нас нет _данных для дочерних узлов необработанного узла.Существует ли что-то подобное уже с открытым исходным кодом?Если нет, я постараюсь создать такой проект и загрузить его на GitHub.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...