Wie mache ich eine Baumstruktur in C++, die Iteratoren anstelle von Zeigern verwendet? Ich konnte nichts in der STL finden, das das kann. Was ich möchte in der Lage sein zu tun ist, Bäume zu erstellen und zu manipulieren, wie folgt aus:Wie erstellt man einen Baum in C++?
#include <iostream>
#include <tree>
using namespace std;
int main()
{
tree<int> myTree;
tree<int>::iterator i = myTree.root();
*i = 42;
tree<int>::iterator j = i.add_child();
*j = 777;
j = j.parent();
if (i == myTree.root() && i == j) cout << "i and j are both pointing to the root\n";
return 0;
}
Vielen Dank, scheint tree.hh genau das, was ich suchte.
Wenn dies für die Gewinnung der Nutzen von ist eine Datenstruktur beliebigen Indextypen halten, optimiert für und gut Einsetzen suchen, dann betrachten eine Karte.
Eine Karte ist ein assoziativer Behälter, die Leistungsgarantien identisch die einen Baums hat: logarithmische Suche, logarithmische Insertion, Deletion logarithmisch, linear Raum. Intern werden sie oft als rot-schwarze Bäume implementiert, obwohl das keine Garantie ist. Als STL-Benutzer sollten Sie jedoch nur die Leistungsgarantien der STL Algorithmen und Datenstrukturen beachten. Ob sie als Bäume implementiert sind oder kleine grüne Männer sollten Sie nicht auf setzen.
Ich bin mir nicht sicher, ob eine Karte ist was ich brauche, aber danke für die Info. Ich werde daran denken, wann immer möglich Karten zu verwenden, anstatt Bäume zu implementieren.