質問

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);

(不適切)ブーストの例

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top