C++ C++;使用时出错<;设置>;

C++ C++;使用时出错<;设置>;,c++,C++,我不断得到实例化的错误。尝试修复它,不管怎样,我似乎无法实现设置。尝试使用向量,但我不知道如何正确实现相等运算符,也失败了 起初我使用的是向量,但在试图保持x和y值唯一时很难使用。也就是说,我会读一个文本文件的数据。 Point1[3,10] Point2[10,10] 因此,点1将从点2转到不同的向量,然后分别存储数据。但不知何故,在文本文件中有重复的点1、[3,10]的值。我不想插入另一个相同的记录,并希望它们是唯一的。因此,我尝试使用set,但无法真正插入数据 错误包括: 在成员函数“bo

我不断得到实例化的错误。尝试修复它,不管怎样,我似乎无法实现设置。尝试使用向量,但我不知道如何正确实现相等运算符,也失败了

起初我使用的是向量,但在试图保持x和y值唯一时很难使用。也就是说,我会读一个文本文件的数据。
Point1[3,10]
Point2[10,10]

因此,点1将从点2转到不同的向量,然后分别存储数据。但不知何故,在文本文件中有重复的点1、[3,10]的值。我不想插入另一个相同的记录,并希望它们是唯一的。因此,我尝试使用set,但无法真正插入数据

错误包括:

在成员函数“bool std::les::operator()(const _Tp&,const
_Tp&)const[with _Tp=Point]':STL_TREE.h:980:从'std::pair::iterator,bool>std::_Rb_TREE实例化如果要将点放入一个集中,则set需要一种方法将一个点与另一个点进行比较,以便将它们按顺序排列。必须声明此函数

bool operator<(const Point& p1, const Point& p2)
{
    ...
}

bool操作符
std::set
需要一个比较函数或函子来比较两个
,并应用严格的弱顺序。您可以通过给
一个小于比较的函数来实现这一点

您可以使用
std::tie
轻松实现这一点:

#include <tuple> // for std::tie

class Point
{
    // rest as before
    friend bool operator<(const Point& lhs, const Point& rhs)
    {
      return std::tie<lhs.x, lhs.y> < std::tie<rhs.x, rhs.y>;
    }
};
#包括//用于std::tie
类点
{
//照旧休息

friend bool operator-1没有发布错误,也没有缩小错误范围。你会得到什么错误?你期望得到什么?现在这里有很多代码,请多花点时间解释你的问题和解决方案尝试。我很抱歉。我发布了错误。我的解决方案最初是尝试向量,但我希望x,y值是唯一的。所以我将其更改为现在设置。邪恶:一个名为“Main”的类,其中“Main”函数的大小写仅相差1个字母。使用tie是我加入不久后学到的最好技巧之一。
bool operator<(const Point& p1, const Point& p2)
{
    ...
}
bool operator<(const Point& p1, const Point& p2)
{
    return p1.x < p2.x || p1.x == p2.x && p1.y < p2.y;
}
#include <tuple> // for std::tie

class Point
{
    // rest as before
    friend bool operator<(const Point& lhs, const Point& rhs)
    {
      return std::tie<lhs.x, lhs.y> < std::tie<rhs.x, rhs.y>;
    }
};