Я хочу создать древовидную структуру, но на основе unordered_map
тем. Короче говоря, я хочу создать дерево топи c, и я подумал об этом подходе:
typedef struct topic_tree {
int id;
unordered_map<string, struct topic_tree *> children;
} topic_tree;
Это звучит как довольно хорошая идея, потому что для каждого "топи c" я бы имел идентификатор для него (или того, что мне нужно), и из каждого узла будет карта от следующей строки до следующего дерева темы и т. д.
Я попытался создать это дерево: first/second/third
. Это означает, что сначала он является родителем второго, а второй - родителем третьего. Могут быть и другие вещи, например first/forth/fifty
, это означает, что у первого теперь есть 2 ребенка, второго и четвертого ... это объяснение. Теперь давайте перейдем к проблеме:
Например, я объявляю это:
topic_tree *root = (topic_tree *)malloc(sizeof(struct topic_tree));
root->id = -1;
topic_tree *x = (topic_tree *)malloc(sizeof(struct topic_tree));
x->id = 5;
root->children["first"]=x;
но это: root->children["first"] = x;
дает мне Floating point exception
, и я понятия не имею, почему ..