Was ist eine Eigenschaftskarte in BOOST?

8

Kann jemand einem Boost-Anfänger wie mir erklären, was eine Grundstückskarte in Boost ist? Ich bin darauf gestoßen, als ich versuchte, die BGL für die Berechnung von starken verbundenen Komponenten zu verwenden. Ich habe die Dokumentation für das Property Map- und Graph-Modul geworfen und weiß immer noch nicht, was ich daraus machen soll. Nimm diesen Code, zum Beispiel: - Was macht die make_iterator_property_map-Funktion? - und was bedeutet dieser Code: get (vertex_index, G)?

%Vor%     
Matei Florescu 02.12.2013, 10:23
quelle

1 Antwort

6

PropertyMaps ist im Kern eine Abstraktion des Datenzugriffs. Ein Problem, das sehr schnell bei der generischen Programmierung auftaucht, ist: Wie bekomme ich Daten, die mit einem Objekt verbunden sind? Es könnte in dem Objekt selbst gespeichert werden, das Objekt könnte ein Zeiger sein, es könnte sich außerhalb des Objekts in einer Zuordnungsstruktur befinden.

Sie können natürlich den Datenzugriff in einem Funktor einkapseln, aber das wird sehr schnell langweilig und Sie suchen nach einer engeren Lösung, die in Boost ausgewählt ist PropertyMaps.

Denken Sie daran, das ist nur das Konzept. Konkrete Instanzen sind zum Beispiel ein std::map (mit einer gewissen syntaktischen Anpassung), eine Funktion, die ein Mitglied des Schlüssels zurückgibt (wiederum mit einer gewissen syntaktischen Anpassung).

Zur Bearbeitung: make_iterator_property_map erstellt eine iterator_property_map . Das erste Argument liefert einen Iterator für eine Basis von Offset-Berechnungen. Das zweite Argument ist wieder eine property_map, um die Offset-Berechnung durchzuführen. Zusammen bietet dies eine Möglichkeit, ein vertex_descriptor zum Schreiben von Daten in vector basierend auf dem Index von vertex_descriptor zu verwenden.

    
pmr 02.12.2013, 10:51
quelle