我有这种类型,基本上是
struct { int x,y,z; }
我想用作 STL 映射的键。由于它是自定义类型,我需要为 map 实现 operator< 来实现它的比较魔法。
我很难实现允许这样做的功能。到目前为止,我已经尝试过:
return X < v.X && Y < v.Y && Z < v.Z;
根本不起作用,并且
return X*X+Y*Y+Z*Z < v.X*v.X+v.Y*v.Y+v.Z*v.Z;
给出这个形状而不是正方形:
请记住,x、y 或 z 值可能为负,这进一步使后面的解决方案无效。
有人知道如何实现这样的功能吗?
最佳答案
我假设您只需要任何稳定的订单,这样订购的容器就可以使用。
if ( X != v.X ) return X < v.X;
if ( Y != v.Y ) return Y < v.Y;
return Z < v.Z;
这是做什么的:除非 X 相等,否则您根据 X 进行排序,如果相等,则根据 Y 进行排序,等等。
关于c++ - 为 x,y,z 坐标实现 operator<,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11181760/