std的map或者set中,比较浮点类型二维三维数据
在map和set中,如果比较对象是二维或者三维数据,需要把二维三维数据的浮点数转换为比较精度。
如果比较精度是0.001,那么数据的精度也必须是0.001,不然会出现如下情况:
比较函数
struct Point001Comp { bool operator()(const Point* l, const Point* r) const { if(fabs(l->X-r->X)<0.001) { if(fabs(l->Y-r->Y)<0.001) { return false; } else { return l->m_Y<r->m_Y; } } else { return l->m_X<r->m_X; } } };
按顺序插入以下数据。
87.285763,267.174099
87.286628,263.922115
查询
87.286943,263.922115
会发现查询不到。