Я пишу код на C ++, он должен быть в состоянии создать мультитрие с тем узлом, который я написал. Но я пытался использовать контейнеры дерева, которые я загружаю по указанному ниже адресу, для хранения моего узла, но все они, кажется, не могут хранить узел, который имеет несколько значений в нем.
http://www.datasoftsolutions.net/tree_container_library/overview.php
http://archive.gamedev.net/archive/reference/programming/features/coretree2/default.html
struct node{ //construct the node
char *dirname;
char date[12];
int loc;
bool prot;
}
Так есть ли в каких-либо контейнерах дерева можно хранить тот узел, который я написал?
Мне нужно хранить узлы как мультидерево.
Я сомневаюсь, что это как-то связано с несколькими полями в struct node.
Любой тип данных, хранящийся в дереве, потребует некоторых операторов сравнения. Вам нужно будет выяснить, какие из них требует библиотека, которую вы пытаетесь использовать, а затем реализовать их для своего типа узла. Я взглянул на документацию. Пакет написан на C ++, использует шаблоны и совместим с STL. Так что это может также потребовать определенных typedefs, таких как value_type и т. Д.
Покажите нам сообщения об ошибках, которые вы получаете, и мы можем решить их. Как минимум, вам, вероятно, потребуется реализовать оператор< и оператор! = или эквиваленты.
ОБНОВЛЕНИЕ: Для того, чтобы искать дерево (или помещать в него узлы), вам нужно определить хотя бы оператор<, Сообщение об ошибке говорит нам об этом. Вам также, вероятно, понадобится оператор ==, чтобы он работал правильно. Попробуйте это (не проверено):
#include <cstring>
bool operator< (const node& left, const node&right) {
return 0 > strcmp(left.dirname, right.dirname);
}
bool operator== (const node& left, const node&right) {
return 0 == strcmp(left.dirname, right.dirname);
}
Других решений пока нет …