图对象的邻接列表自引用 我试图在C++中实现一个图类的相邻列表。目前,我想写一个方法来更新图节点和每个相邻节点的相邻列表。你能告诉我这段代码有什么问题吗?当我执行程序时,相邻节点的相邻列表中仍然没有调用update_nextant的节点。 先谢谢你 void Graph::update_adjacent(list<Graph>l) { for (list<Graph>::iterator iterator = l.begin(), end = l.end(); iterator != end; ++iterator) { adj_list.push_back(*iterator); (*iterator).adj_list.push_back(*this); }} void图::更新相邻(列表){ for(list::iterator iterator=l.begin(),end=l.end();iterator!=end;++iterator){ 调整列表。向后推(*迭代器); (*迭代器).adj_list.push_back(*this); }}

图对象的邻接列表自引用 我试图在C++中实现一个图类的相邻列表。目前,我想写一个方法来更新图节点和每个相邻节点的相邻列表。你能告诉我这段代码有什么问题吗?当我执行程序时,相邻节点的相邻列表中仍然没有调用update_nextant的节点。 先谢谢你 void Graph::update_adjacent(list<Graph>l) { for (list<Graph>::iterator iterator = l.begin(), end = l.end(); iterator != end; ++iterator) { adj_list.push_back(*iterator); (*iterator).adj_list.push_back(*this); }} void图::更新相邻(列表){ for(list::iterator iterator=l.begin(),end=l.end();iterator!=end;++iterator){ 调整列表。向后推(*迭代器); (*迭代器).adj_list.push_back(*this); }},c++,graph,this,C++,Graph,This,您正在列表中使用自动存储。这意味着每次执行adj_list.push_back(*iterator)时,您都在复制列表中迭代器指向的对象(而不是保留对迭代器指向的对象的引用)。在下一行,当您在迭代器的对象邻接列表中插入*this时,以前存储在该->邻接列表中的副本将过时。 为了解决您的问题,我建议您开始使用unique_ptr代替Graph,从而将method参数和adj_list成员属性从list改为list

您正在列表中使用自动存储。这意味着每次执行adj_list.push_back(*iterator)时,您都在复制列表中迭代器指向的对象(而不是保留对迭代器指向的对象的引用)。在下一行,当您在迭代器的对象邻接列表中插入*this时,以前存储在该->邻接列表中的副本将过时。 为了解决您的问题,我建议您开始使用unique_ptr代替Graph,从而将method参数和adj_list成员属性从list改为list