C++ 映射参数内的自定义类型
我偶然发现了一个关于地图我无法解决的问题。正如我们所知,映射需要处理两种类型的变量,即映射,但是自定义类型呢 假设我有一个叫做“点”的对象,它由两个变量组成,x和y。是否可以声明像:map?这样的映射?。请看下面的代码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
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);
}