Standard library containers like std::map
require that your ordering is a "Strict Weak Ordering", so you have to be very careful when designing one.
The typical approach for a 3-ary tuple looks like this:
bool operator<(const point& other) const
{
if (x != other.x)
return (x < other.x);
if (y != other.y)
return (y < other.y);
return (z < other.z);
}
It's like a comparator for just x
, but with the difference that if the two x
s are the same, you fall through to compare y
s. If they are the same, then similarly you fall through to the z
comparison.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…