首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

STL中map结构查找解决方法

2012-03-06 
STL中map结构查找typedefstruct_gpc_vertex/*Polygonvertexstructure*/{doublex/*Vertexxcomponent*/doub

STL中map结构查找
typedef   struct   _gpc_vertex                                           /*   Polygon   vertex   structure                     */
{
    double                             x;                         /*   Vertex   x   component                                 */
    double                             y;                         /*   vertex   y   component                                 */
    bool   operator   <   (const     _gpc_vertex   &p2)   const
    {
    if   (x   <   p2.x)
    {
    return   true;
    }
    if   (fabs(x   -   p2.x)   <   dZERO)
    {
    return   y   >   p2.y;
    }
    return   false;
    }
    bool   operator   ==   (const     _gpc_vertex   &p2)   const
    {
    if   (fabs(x-p2.x)   <   dZERO   &&   fabs(y-   p2.y)   <   dZERO)
    {
    acutPrintf( "\ntrue ");
    return   true;
    }
    acutPrintf( "\nfalse ");
    return     false;
    }
}   gpc_vertex;


gpc_vertex   vert;
vert.x   =   pt.x;
vert.y   =   pt.y;
std::map <gpc_vertex,   LPstruPolygonVert> ::iterator   iter   =     m_mapPoints.find(vert);
LPstruPolygonVert   pVert   =   NULL;
if   (iter   ==   m_mapPoints.end())
{
pVert   =   new   struPolygonVert();
pVert-> pt   =   pt;
m_Verts.Add(pVert);
m_mapPoints.insert(std::pair <gpc_vertex,   LPstruPolygonVert> (vert,pVert));
return   pVert;
}
else
{
pVert   =   iter-> second;
return   pVert;
}
为什么找不到这个元素阿



[解决办法]
map的find用的是 <而不是==,看effective stl item19
[解决办法]
看书
[解决办法]
那find函数是如何查找一个key的?通过 <符号仅能排序如何能确定相等?
!(a < b) && !(b < a) <=> a == b

热点排行