Есть ли какой-нибудь контейнер дерева, который может хранить узел, который имеет несколько значений в нем?

Я пишу код на 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;
}

Так есть ли в каких-либо контейнерах дерева можно хранить тот узел, который я написал?
Мне нужно хранить узлы как мультидерево.

0

Решение

Я сомневаюсь, что это как-то связано с несколькими полями в 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);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]