adjacency_listヘルプのブーストが必要
-
03-07-2019 - |
質問
Boostのadjacency_listタイプを使用しようとしていますが、ドキュメント。
Stateという名前のクラスを定義し、米国の各状態に対して1つのインスタンスをインスタンス化するとします。
class State { ... };
State california, oregon, nevada, arizona, hawaii, ...
これらをboost :: adjacency_listに入力します。頂点は状態で、エッジは境界線です。上記の州の場合、グラフには次のデータが含まれると思います。
california : oregon, nevada, arizona
hawaii :
oregon : california, nevada
nevada : oregon, california, arizona
arizona : california, nevada
intをグラフに入れる方法を理解しており、状態の配列を作成し、それらの配列インデックスをグラフに挿入することを検討しましたが、次のように言うことができるようです:
add_edge(california, oregon, graph);
しかし、もちろんそれは機能しません。助けてください!
編集:
こちらは、私がほぼ正確にした例です必要。
解決
boost :: adjacency_listを参照すると、クラスのようなものではなく、頂点のプロパティを使用することになっているようです:
struct VertexProperties {
std::string stateName;
};
typedef adjacency_list<listS, listS, bidirectionalS, VertexProperties> Graph;
Graph adjacentStates(50);
property_map<Graph, std::string VertexProperties::*>::type
stateName = get(&VertexProperties::stateName, adjacentStates);
add_edge(vertex("california", adjacentStates), vertex("oregon", adjacentStates), adjacentStates);
(不適切)ブーストの例。
所属していません StackOverflow