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

会发现查询不到。

posted @ 2024-07-25 11:18  上位机  阅读(6)  评论(0编辑  收藏  举报