私はまだC++を勉強しています。少し助けてください。グラフの隣接リストの要素を表示するにはどうすればいいですか?
struct Vertex
{
list<Vertex*> adj;
string name;
Vertex(string str) : name(str) {}
};
class Graph
{
public:
typedef map<string, Vertex*> vmap;
vmap vm;
void AddVertex(const string&);
void AddEdge(const string& from, const string& to);
};
私はそれを使用する方法:
Graph g1;
g1.AddVertex("2");
g1.AddVertex("3");
g1.AddVertex("4");
g1.AddVertex("1");
g1.AddEdge("1", "2");
g1.AddEdge("1", "3");
g1.AddEdge("1", "4");
は、今私は単にCOUT頂点とその接続が(場合は、任意の存在する)かどうかを確認するためにしたいのですが、私は以下のグラフの表現を持っていますそれは私が期待しているように働いています。私は、次の方法を試してみましたが、私は完全には理解できないことだし、それを固定することができますかわからないエラーを取得しています:
map<string, Vertex*>::iterator itr = g1.vm.begin();
for(itr; itr != g1.vm.end(); itr++)
{
cout << itr->first << " ";
list<Vertex*>::iterator li = itr->second->adj.begin();
for(li; li != itr->second->adj.end(); li++)
{
cout << li->name << " ";
}
cout << endl;
}
私の質問はどのようにiから頂点名を得ることができるということですそのadjリスト?前もって感謝します!
エラーを投稿できますか? forループの初期化部分( 'for(itr; ...'))には意味がありませんので、その部分を削除してみてください – ehudt