C++ 使用vector std::find和用户创建的对象-第三个参数

C++ 使用vector std::find和用户创建的对象-第三个参数,c++,stl,iterator,find,C++,Stl,Iterator,Find,我试图使用std::find来搜索向量,并在找到所需对象时返回迭代器。我面临的问题是,我不确定第三个论点应该放在哪里。下面是相关的代码行以及我正在使用的对象的定义 功能: vector<Vertex>::const_iterator findV = find(testV.begin(), testV.end(), vtx); //vtx is of type Vertex class Vertex { private: int currentIndex;

我试图使用
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;}
};
如果需要进一步澄清,请告诉我


谢谢

您需要为
顶点
类重载
=
操作符,以便
std::find
理解一个顶点与另一个顶点何时相同。这就是本杰明想带你去的地方

std::find
的代码可在以下位置找到:

模板
输入计算器查找(输入计算器第一,输入计算器最后,常量T&val)
{
while(第一个!=最后一个){
如果(*first==val),则首先返回;
++第一,;
}
最后返回;
}

希望该代码能更清楚地说明发生了什么。

看看您的错误消息,问问自己
std::find
应该如何知道何时找到您要查找的项目。它如何比较它们?使用运算符==。我猜我需要重载…@CollinOladimeji“我猜我需要超负荷……”宾果!谢谢。我不是想让自己听起来像个十足的编程白痴,这是我大学工程学位的一部分,我(还没有)最好的。我们都去过。一旦找到std::find的代码,就更容易理解了。搜索有关标准库的信息总是很有用的。
error: no match for 'operator==' (operand types are 'Vertex' and 'const Vertex')|
template<class InputIterator, class T>
  InputIterator find (InputIterator first, InputIterator last, const T& val)
{
  while (first!=last) {
    if (*first==val) return first;
    ++first;
  }
  return last;
}