【发布时间】:2012-11-26 19:29:27
【问题描述】:
我找不到我的程序抛出 SIGBART 错误的原因。
当这个函数被调用时,我已经缩小了范围。
bool Node::isEdgeConnected(Node vertex1, Node vertex2){
//I'm not sure if this is the right way to copy this vector <list>
vector<list<Node> > myEdgeList = *edgeList;//edgeList is a private data member of Node
vector<list<Node> >::iterator it;
cout << myEdgeList.size();
for (it = myEdgeList.begin(); it != myEdgeList.end(); it++) {
list<Node> edge;
edge = *it;
Node placeNode = edge.front();
cout <<placeNode.getNodeId()<<endl;
list<Node>::iterator eIt;
for (eIt = edge.begin(); eIt != edge.end(); eIt++) {
Node placeNode1, placeNode2;
placeNode1 = edge.front();
placeNode2 = *eIt;
cout << placeNode1.getNodeId() << " " << placeNode2.getNodeId()<<endl;
if(placeNode1.getNodeId() == vertex1.getNodeId() &&
placeNode2.getNodeId() == vertex2.getNodeId()){
return true;
}
}
}
return false;
}
任何帮助将不胜感激。
【问题讨论】:
-
断言 edgeList 不为空,类似于
assert(edgeList!=NULL) -
另外,如果您可以在使用高调试标志 (-ggdb) 且没有优化 (-O0) 进行编译时从调试器发布回溯。
-
断言声明的头文件是什么。
标签: c++ xcode list graph vector