繁体   English   中英

问题向量在哪里找到c ++?

[英]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类型的对象。 我想nidint类型的,除非在Edgeint之间实现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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM