读书人

STL中map结构查找解决方法

发布时间: 2012-03-06 20:47:55 作者: rapoo

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

读书人网 >C++

热点推荐