在过去的两三个小时里,我一直在努力解决这个问题。我正在阅读文本,然后尝试创建一个邻接列表,其中所有顶点都有一个链接到列表中相邻顶点的链接。顶点类看起来像这样:
class Vertex {
private:
std::vector<Vertex*> connPtrVertices; // vector of vertices adjacent to this one
public:
void addVertex(Vertex* vert) { connPtrVertices.push_back(vert); }
在main.cpp中,我试图将顶点彼此连接起来:
Vertex *v1, *v2;
v2->addVertex(v1); // connect v2 to v1
v1->addVertex(v2); // connect v1 to v2
我收到一条Debug Assertion Failed消息:
Debug Assertion Failed!
Program: C:\Windows\system32\MSVCP110D.dll
File: c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector
Line: 240
Expression: vector iterators incompatible
我不知道该怎么做,我们将非常感谢任何帮助。
编辑: 第一次通过循环我分配v1和v2与新,但第二次我检查它们是否存在,如果他们这样做,我指定一个指向Vertex的指针,如下所示:
v1 = &(p_graph->getVertex(vert1));
调用的方法是:
Vertex Graph::getVertex(std::string v) { // gets the vertex
for (std::vector<Vertex>::iterator it = vertices.begin(); it != vertices.end(); it++) {
if ((it->getName()).compare(v) == 0)
return *it; // if strings are the same return vertex
}
exit(1);
}
这是错误的地方吗?
答案 0 :(得分:0)
VertexType顶点;
Vertex Graph :: getVertex(std :: string v){
}
确保您的迭代器指向Vertex对象类型。