1

在一个函数中,我正在检查列表的值是否是列表的末尾:

bool Graph::adjacent(const int vertex1, const int vertex2){
return (returnEdge(neighbors(vertex1), vertex2) != neighbors(vertex1).end());

在这一行中,neighbors 返回向量的邻接列表:

std::list<Edge> Graph::neighbors(int vertex1) const {
return adjacency_list[vertex1];  // returns the list of all the edges
}

returnEdge 返回该列表中的 Edge:

Edge Graph::returnEdge(std::list<Edge> lista, const int vertex2){
return (*(std::find(lista.begin(), lista.end(), Edge(vertex2, 1))));
}

错误出现在我在这里复制的第一行代码处,并且是:

no match for 'operator!=' in '((Graph*)this)->Graph::returnEdge(Graph::neighbors(int) const(vertex1), vertex2) != (&Graph::neighbors(int) const(vertex1))->std::list<_Tp, _Alloc>::end [with _Tp = Edge, _Alloc = std::allocator<Edge>]()' 

我在文件中重载的运算符是:

bool operator!=(const Edge& e) const 
           { return (e.nextVertex != nextVertex); }

我认为我的运算符重载错误,或者 returnEdge 和 neighbors().end() 没有返回相同类型的变量。我该如何解决?

4

0 回答 0