2009-03-03 4 views
2

ブーストのadjacency_listタイプを使用しようとしていますが、documentationの理解に問題があります。ブーストadjacency_listヘルプが必要

は、私は国家という名前のクラスを定義して、私はアメリカで状態ごとに1つのインスタンスを生成言う:

class State { ... }; 
State california, oregon, nevada, arizona, hawaii, ... 

私はブーストにこれらを入力する::のadjacency_list頂点が状態であり、エッジが国境です。私は上記の状態に関しては、私はグラフがこのデータを持っていると思う:

california : oregon, nevada, arizona 
hawaii : 
oregon : california, nevada 
nevada : oregon, california, arizona 
arizona : california, nevada 

私はグラフにint型を置く方法を理解し、私はちょうど状態の配列を作り、グラフにその配列のインデックスを挿入すると考えられ、私はちょうど言うことができるはずです:

add_edge(california, oregon, graph); 

もちろん、それは動作しません。助けてください!

編集:
Here'sほぼ正確に私は必要なものの一例。

+0

どのように機能しないのですが、エラーが役に立ちます。 – user7116

答えて

3

ブースト上に読み::の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); 

(不十分)an example in boostから適応。

+0

Oy!それは私が思ったよりも悪いです。私はこれを行うための別の方法を見つけるだろうと思う。私は...賢明なコードを維持する必要はありません。答えをありがとう。 – criddell

+0

グラフの4番目のテンプレートパラメータとしてVertexPropertiesを追加してください。つまり、双方向を3番目に追加する必要があります。 –

+0

ありがとう、私はそれらの変更を加えました。 – user7116