我还在研究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;
}
我的问题是,怎样才能从顶点名字那个形容词?先谢谢你!
你能发布错误吗? 在for循环的初始化部分('for(itr; ...'),itr没有任何意义,请尝试将其作为开始。 – ehudt