[英]where is the problem vector find c++ ??
编译时出现错误,我不明白问题出在哪里?
class Edge{
public:
int nid;
bool operator==(const Edge& edge) const {
return nid == edge.nid;
}
};
和这里的问题
vector<Edge> edges;
vector<Edge>::iterator it;
it = find (edges.begin(), edges.end(), nid);
if( it != edges.end() )
edges.erase(it);
有任何想法吗 ?!!!?
find
将使用nid
比较(与==
)向量中Edge
类型的对象。 我想nid
是int
类型的,除非在Edge
和int
之间实现operator==
,否则它将不起作用。
你可以试试 :
it = find (edges.begin(), edges.end(), Edge(nid));
您尚未描述问题的摘要症状,但我想这与未定义operator!=
您可能想将其定义为
bool operator!=(const Edge&edge)const {
return !(*this == edge);
}
同样如果您的find(...,nid)将nid用作整数参数,则可能还需要重载==运算符为
bool operator==(const int&edge)const {
return this->nid == edge;
}
您也可以重载运算符!=,或简单地否定if条件。
假设nid与类中的类型相同,我假设您对find()的第三个参数的类型有所抱怨。 我认为您可以将其切换为:
vector<Edge>::iterator it = find (edges.begin(), edges.end(), edges.begin() + nid);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.