我想使用迭代器的find方法来检查我是否已经在向量中定义了类I的实例。我已经重载了该类的==运算符。但是,我无法编译它。
我在这里缺少什么?
先谢谢。
这是代码中的代码段:
vector<ContourEdgeIndexes>::iterator it = find(contourEdges.begin(),contourEdges.end(),contourEdgeCand);
if(it != contourEdges.end()) {
contourEdges.erase(it);
}
compiler gives this error:
error: no matching function for call to ‘find(std::vector<ContourEdgeIndexes>::iterator, std::vector<ContourEdgeIndexes>::iterator, ContourEdgeIndexes&)’
edit:
and here is the overloaded == operator:
bool operator == (ContourEdgeIndexes& rhs) {
if((this->first == rhs.first) && (this->second == rhs.second))
return true;
else
return false;
}
答案 0 :(得分:3)
如果操作员定义为成员,则应接受对ContourEdgeIndexes
的持续引用。运算符本身也应该是const。
bool operator == (const ContourEdgeIndexes& rhs) const {
return ((this->first == rhs.first) && (this->second == rhs.second));
}