【发布时间】:2015-08-06 07:41:01
【问题描述】:
我正在尝试使用std::find 搜索向量并返回找到所需对象的迭代器。我遇到的问题是我不确定将什么作为第三个参数。下面是相关的代码行以及我正在使用的对象的定义。
功能:
vector<Vertex>::const_iterator findV = find(testV.begin(), testV.end(), vtx);
//vtx is of type Vertex
类定义:
class Vertex
{
private:
int currentIndex;
double xPoint, yPoint, zPoint;
vector<double> vertexAttributes;
public:
Vertex();
~Vertex();
friend istream& operator>>(istream&, Vertex &);
friend ostream& operator<<(ostream&, const Vertex &);
double getIndex(){return currentIndex;}
double get_xPoint(){return xPoint;}
double get_yPoint(){return yPoint;}
double get_zPoint(){return zPoint;}
};
从逻辑上讲,我会假设由于我正在搜索 Vertex 类型的对象,因此第三个参数也应该是这种类型,但这不起作用。
收到的错误是:
error: no match for 'operator==' (operand types are 'Vertex' and 'const Vertex')|
如果需要进一步说明,请告诉我。
谢谢
【问题讨论】:
-
查看您的错误消息,并问问自己
std::find应该如何知道它何时找到了您要查找的项目。 -
如何比较它们?
-
使用运算符 ==.
-
我猜我需要超载...
-
@CollinOladimeji “我猜我需要超载...”宾果游戏!