C++ 映射参数内的自定义类型

C++ 映射参数内的自定义类型,c++,map,custom-type,C++,Map,Custom Type,我偶然发现了一个关于地图我无法解决的问题。正如我们所知,映射需要处理两种类型的变量,即映射,但是自定义类型呢 假设我有一个叫做“点”的对象,它由两个变量组成,x和y。是否可以声明像:map?这样的映射?。请看下面的代码 class Point { public: double x; double y; Point(double x, double y) { this->x=x; this->y=y; } }; int main(int argc, const cha

我偶然发现了一个关于地图我无法解决的问题。正如我们所知,映射需要处理两种类型的变量,即映射,但是自定义类型呢

假设我有一个叫做“点”的对象,它由两个变量组成,x和y。是否可以声明像:map?这样的映射?。请看下面的代码

class Point
{
public:
double x;
double y;
Point(double x, double y)
{
    this->x=x;
    this->y=y;
}
};

int main(int argc, const char * argv[])
{
      map<Point,int> myMap;
      Point p1(0,0);
      myMap[p1]=1;
} 
类点
{
公众:
双x;
双y;
点(双x,双y)
{
这个->x=x;
这->y=y;
}
};
int main(int argc,const char*argv[]
{
地图我的地图;
点p1(0,0);
myMap[p1]=1;
} 
我收到一个编译错误:“二进制表达式('const Point'和'const Point')的操作数无效。”

有人知道为什么会发生这种情况吗?我该如何解决?任何帮助都将不胜感激:)


干杯

您需要提供
运算符
bool operator<(const Point& lhs, const Point& rhs) 
{
    // compares lhs.x to rhs.x,
    // then lhs.y to rhs.y
    return std::tie(lhs.x, lhs.y) < std::tie(rhs.x, rhs.y);
}