Ändern von Vertex-Eigenschaften in einem Boost :: Graph
Ich versuche herauszufinden, wie die Verwendung von boost::graph zu speichern, einige Informationen. Es gibt jedoch Informationen, die ich will, gebunden an jeder Ecke. Starrte an die Dokumentation für die Bibliothek zeigt entweder(a)schlecht geschrieben Dokumentation oder (b), bin ich offensichtlich nicht so gut auf C++ als ich dachte. Wählen Sie zwei.
Ich bin auf der Suche nach einem einfachen Beispiel verwenden.
Kommentar zu dem Problem
Nach dem Start an Schub Dokumente, die in '17, ich habe die gleichen zwei Offenbarungen.
InformationsquelleAutor der Frage Paul Nathan | 2009-03-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was über die Verwendung von gebündelten Eigenschaften?
und so weiter.
Ich benutze BGL viel und arbeiten mit gebündelten Eigenschaften ist wirklich unkompliziert (siehe die Dokumentation).
Den anderen Typ von vertex-Eigenschaft, die ich sehr oft verwende sind die externen Eigenschaften. Sie können erklären
std::vectors
der entsprechenden Größe verwenden und Sie als Eigenschaften die meisten der Zeit und in den meisten der algorithmen.InformationsquelleAutor der Antwort baol
Ich weiß nicht, wie die verschachtelte template-Eigenschaft Ansatz von boost::graph, also schrieb ich einen kleinen wrapper um alles, dass es grundsätzlich ermöglicht, jede struct/Klasse als ein vertex/edge-Eigenschaft. Zugriff auf Eigenschaften der Zugriff auf struct-Mitglieder.
Halten es flexibel diese Strukturen sind definiert als template-parameter.
Hier der Code:
Mithilfe dieser können Sie auf die Eigenschaften zugreifen, wie diese:
Natürlich können Sie andere Bedürfnisse für Ihr Diagramm ist die Struktur, aber änderungen der obige code sollte Recht einfach sein.
InformationsquelleAutor der Antwort grefab
Unten ist der code, den ich verwendet, um zu befestigen, einige Eigenschaften zu Ecken, Kanten und Graphen. Beachten Sie, dass vertex-Namen und graph-Namen sind vordefinierte Eigenschaften (siehe boost/Eigenschaften.hpp für eine vollständige Liste), so dass
vertex_name_t
undgraph_name_t
bereits definiert sind. Allerdingsvertex_location_t
,edge_length_t
, undgraph_notes_t
sind meine eigenen Eigenschaften und müssen deshalb in der definition. Ich zusammengeschustert diesen code aus verschiedenen Beispielen und der Dokumentation, und ich bin nicht sicher, was genauBOOST_INSTALL_PROPERTY
tut, aber der code scheint nicht zu funktionieren.InformationsquelleAutor der Antwort
Halte ich Steigern.Graphen, eine sehr gute Dokumentation, aber nicht wirklich für Anfänger in der Sache. So, hier geht ein Beispiel, ich hoffe das ist einfach genug !
InformationsquelleAutor der Antwort Benoît
Fand ich die Beispiele, die ziemlich nützlich. Auf windows wird es in Ihren \Program Files\boost\boost_1_38\libs\graph\Beispiel-Verzeichnis.
kevin_bacon2.cpp nutzt vertex-Eigenschaften zu speichern, die die Namen der Akteure.
Ihre vertex und edge-Eigenschaften können gespeichert werden, in regelmäßigen structs oder Klassen.
InformationsquelleAutor der Antwort eodonohoe