在一个函数中,我正在检查列表的值是否是列表的末尾:
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() 没有返回相同类型的变量。我该如何解决?