Bevor Sie anfangen zu lesen, um Ihnen zu helfen meine Frage zu verstehen, ich sage, dass ich den Code aus diesem Link kopiert habe: Dijkstra Shortest Path with VertexList = ListS in boost graphBoost :: Dijkstra Kürzester Pfad, wie erhält man den Vertex-Index vom Pfad-Iterator?
Also .. ich meinen Programmcode ist Umschreiben Boost zu verwenden, aber jetzt, wenn 99% ist bereit Ich bin mit meinem GPS fest (für ein Spiel). Ich habe eine Liste von Knoten, die ich in einer Weise hinzugefügt habe, die glücklicherweise leicht in die Boost-Methode umgewandelt werden konnte. Das, was ich tun musste, war erstellen Sie einfach eine vertice Variable wie folgt aus:
Vertex Vx[MAX_NODES];
Ich kopierte die typedefs von der Verbindung, die ich gegeben habe.
So wie ich Eckpunkte hinzuzufügen, ist dies:
stringstream s;
s << i;
Vx[i] = add_vertex(s.str(),dgraph);
Wo "i" eine ganze Zahl gleich. (zB int i = 9)
Und Eges sind auch einfach hinzuzufügen. Jetzt habe ich mein eigenes strukturiertes Array namens "xNode". und zB: xNode [i] enthält alle Informationen für X Y Z-Positionen (xNode [i] .X xNode [i] .Y usw.) der Knoten. Jetzt
wenn der Code-Snippet aus dem Link unter Verwendung Ich habe dies getan:
// Write shortest path
std::cout << "Shortest path from " << startid << " to " << endid << ":" << std::endl;
float totalDistance = 0;
for(PathType::reverse_iterator pathIterator = path.rbegin(); pathIterator != path.rend(); ++pathIterator)
{
std::cout << source(*pathIterator, dgraph) << " -> " << target(*pathIterator, dgraph)
<< " = " << get(boost::edge_weight, dgraph, *pathIterator) << std::endl;
}
Und das ist, wo ich stecken bin, als "Quelle (* pathIterator, dgraph)" und „Ziel (* pathIterator, dgraph) "Adressen holen, aber ich brauche die Vertex-Indizes, um auf xNode [i] zuzugreifen, ich bin die NodeID (oder auch die vertikale ID | Vx [i]). Wie kann ich das tun?
EDIT: Ich habe versucht zu tun:
for(PathType::reverse_iterator pathIterator = path.rbegin(); pathIterator != path.rend(); ++pathIterator)
{
for(int i = 0; i < MAX_NODES; ++i)
{
if(source(*pathIterator, dgraph) == *((Vertex*)Vx[i]))
{
cout << " " << i << " " << endl;
break;
}
}
}
aber gerade abstürzt ..
Danke, Endlich habe ich bekommen (vi, source (* pathIterator, dgraph)) und das funktioniert super! –