Oop 如果向量中有一个元素,那么我试图创建一个返回true/false的函数,但是我得到了一个错误? 我尝试用C++实现一个函数,它使用一个对象和一个对象向量,如果vector中包含对象false,则返回true。以下是该功能的实现: bool belongs(vertex V, std::vector<vertex> &array) { std::vector<vertex>::iterator it; it = find(array.begin(), array.end(), V); if(it != array.end()) { return true; } else { return false; } }

Oop 如果向量中有一个元素,那么我试图创建一个返回true/false的函数,但是我得到了一个错误? 我尝试用C++实现一个函数,它使用一个对象和一个对象向量,如果vector中包含对象false,则返回true。以下是该功能的实现: bool belongs(vertex V, std::vector<vertex> &array) { std::vector<vertex>::iterator it; it = find(array.begin(), array.end(), V); if(it != array.end()) { return true; } else { return false; } },oop,c++,algorithm,data-structures,stl,Oop,C++,Algorithm,Data Structures,Stl,我能做什么?我对使用面向对象编程在STL中编程有点陌生,因此等待您的帮助。主要问题是没有为顶点类型定义操作符==(查找所需的操作符,以确定两个顶点实例是否相同)。您可以按如下方式定义一个: #include <iomanip> #include <iostream> #include <vector> #include <algorithm> struct vertex { float a, b; bool operator==(

我能做什么?我对使用面向对象编程在STL中编程有点陌生,因此等待您的帮助。

主要问题是没有为顶点类型定义
操作符==
(查找
所需的操作符,以确定两个
顶点
实例是否相同)。您可以按如下方式定义一个:

#include <iomanip>
#include <iostream>
#include <vector>
#include <algorithm>

struct vertex
{
    float a, b;
    bool operator==(const vertex& o) const // <-- This method is what find is looking for
    {
        return a == o.a && b == o.b;
    }
};

bool belongs(vertex V, const std::vector<vertex>& array)
{
    return find(array.begin(), array.end(), V) != array.end();
}

int main()
{
    std::vector<vertex> v = { { 1, 2 }, { 3, 4 } };
    std::cout << std::boolalpha << belongs({ 4, 5 }, v);
    return 0;
}
而不是:

if (x)
    return true;
else
    return false;

主要问题是没有为顶点类型定义
运算符==
(查找
需要该运算符才能确定两个
顶点
实例是否相同)。您可以按如下方式定义一个:

#include <iomanip>
#include <iostream>
#include <vector>
#include <algorithm>

struct vertex
{
    float a, b;
    bool operator==(const vertex& o) const // <-- This method is what find is looking for
    {
        return a == o.a && b == o.b;
    }
};

bool belongs(vertex V, const std::vector<vertex>& array)
{
    return find(array.begin(), array.end(), V) != array.end();
}

int main()
{
    std::vector<vertex> v = { { 1, 2 }, { 3, 4 } };
    std::cout << std::boolalpha << belongs({ 4, 5 }, v);
    return 0;
}
而不是:

if (x)
    return true;
else
    return false;

我创建了一个顶点类,在这种情况下我应该怎么做?@DanishAmjadAlvi实现操作符==对于它,我没有你的顶点类,所以我创建了一个。我创建了一个顶点类,在这种情况下我应该怎么做?@DanishAmjadAlvi实现操作符==对于它,我没有你的顶点类,所以我创建了一个。