wie baut man eine Baumstruktur in C++ mit std::map

Ich bin versucht, zu schreiben eine Baum-Art von Struktur in C++. Wie in jedem Baum sind die Zweige und Blätter. Ein Zweig enthalten kann, die anderen Zweige sowie Blätter.
Nun meine Umsetzung fordert, für jeden Zweig und Blatt, um verschiedene Funktionen haben. So zum Beispiel.
Nehmen Sie die Baumstruktur

                                          Root                                             
                                |                          |                             
                             Branch1                     Branch2                     Branch3
      |                |                |
    Leaf1            Leaf2           Branch4

Nun, Jedes Blatt und Zweig hat eine andere Funktion ausführen, so Leaf1 wird eine Funktion aufgerufen, leaf1_func, Leaf2 haben leaf2_func, Branch4 hat Branch4_func.

War ich zunächst versucht zu implementieren composite-design-pattern. Das heißt aber auch, ich hätte so viele Klassen wie Blätter. Aber da habe ich Tonnen von Blättern und Zweigen, die ich möchte vermeiden, schafft mehr Klassen. Ich weiß, dies ist eine ungewöhnliche situation, aber hatte gehofft, jemand könnte mir helfen in dieser Hinsicht. Was wäre die beste Möglichkeit dies umzusetzen Baum, ohne zu viele Klassen.

ich bin mit map STL-container zum speichern von Daten als auch ich wollen, diesen Baum verwenden-Implementierung, um dieses Problem zu lösen, die in TSP-problem.

#include <cstdlib>
#include <iostream>
#include <map>

using namespace std;

int n=4;
int min=1, max=10;




struct graph
{
int nodes;//total no. of nodes or vertices namely cities
std::map<std::pair<int,int>, int> graphMap;//an object that links a pair of vertices   
};


void directed_Graph(graph);

void directed_Graph(graph G)
{
//int n = G->nodes; //city count
int i, j;
for(i = 0; i <= n-1; i++)
{
    for(j = 0; j <= n-1; j++)
    {
        if(i!=j)
        {
            G.graphMap[std::make_pair(i,j)] = (rand()%10)+1;
            //cout<<G.graphMap[std::make_pair(i,j)]<<"\n";
        }

        else
        {
            G.graphMap[std::make_pair(i,j)] = 0;
        }

    }
}
}


int main(int argc, char** argv) 
{
graph g;
g.nodes = 4;

directed_Graph(g);

return 0;
}
  • Was ist mit dem zitierten text block? Ist dieses Hausaufgaben?
  • keine seinen keine Hausaufgaben, ich möchte ein Vorschlag, wie Sie zu vermeiden, mit diesen Funktionen
Schreibe einen Kommentar