【发布时间】:2017-04-19 19:23:23
【问题描述】:
我还在学习 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");
现在我想简单地计算顶点及其连接(如果存在)以检查它是否按预期工作。我尝试了以下方法,但出现了一个我不完全理解且不知道如何修复的错误:
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;
}
我的问题是如何从该 adj 列表中获取顶点名称?提前谢谢!
【问题讨论】:
-
你能发布错误吗?在 for 循环的初始化部分(
for(itr; ...),itr 没有任何意义。尝试删除它作为开始。