C++ C++;成对遍历生成核心转储的列表
我已经编写了将边插入到图形中的小程序,它正在生成代码转储。我正在尝试遍历列表数据。gdb调试器显示核心转储位置C++ C++;成对遍历生成核心转储的列表,c++,C++,我已经编写了将边插入到图形中的小程序,它正在生成代码转储。我正在尝试遍历列表数据。gdb调试器显示核心转储位置“cout”; 对于(列表::迭代器it=adj[V]。开始();it!=adj[V]。结束();+it){ cout在函数void Graph::printGraph()中,您正在使用的for循环内部的V对于所有迭代都是相同的。它应该是 for(list::iterator it=adj[i].begin();it!=adj[i].end();+it) 您已声明字符串s,并且未在程序中
“cout”;
对于(列表::迭代器it=adj[V]。开始();it!=adj[V]。结束();+it){
cout在函数void Graph::printGraph()
中,您正在使用的for循环内部的V
对于所有迭代都是相同的。它应该是
for(list::iterator it=adj[i].begin();it!=adj[i].end();+it)
您已声明字符串s
,并且未在程序中的任何位置使用它。在printGraph()
中:V
不应用作循环中的索引(需要使用i
)。
以下代码工作:
void Graph::printGraph() {
for(int i=0; i<V; i++){
string s = to_string(i) + "->";
for(list<pair<int,int> >::iterator it = adj[i].begin(); it != adj[i].end(); ++it)
cout<< s << it->first<< " and weight is [" << it->second <<"]"<< endl;
}
}
void图形::printGraph(){
for(int i=0;iA是必需的。仅仅因为一个程序在某一特定行上崩溃,这并不意味着这就是错误所在。显示的代码没有明显的错误,但是显示的类违反了,所以这可能是实际的错误;但是没有答案是可能的。
void Graph::printGraph() {
for(int i=0; i<V; i++){
string s = to_string(i) + "->";
for(list<pair<int,int> >::iterator it = adj[i].begin(); it != adj[i].end(); ++it)
cout<< s << it->first<< " and weight is [" << it->second <<"]"<< endl;
}
}