我尝试使用定义为的地图:
map<Vertex,unsigned int> _addedVertices;
现在,当我使用 find 函数检查顶点是否已经在里面时,我得到了一个指向具有不同信息的错误顶点的迭代器,所以我尝试了以下方法:
map<Vertex,unsigned int,cmpByVertexFields> _addedVertices;
这没有帮助。
我在 Vertex 类中也有以下重载函数。
bool operator<(const Vertex &otherV)const{
return(_x<otherV._x && _y<otherV._y && _z<otherV._z);
}
bool operator==(const Vertex &otherV)const{
return _x==otherV._x && _y==otherV._y && _z==otherV._z;
}
但没有任何效果。示例:我插入了一个包含 (0.2,0.1,0.4) 的顶点,接下来我使用的是带有 (0.2,0.15,0.41) 的 find 函数,我得到的迭代器是第一个顶点而不是 map.end()。
我忘了定义什么?谢谢
编辑: cmpByVertexFields :
struct cmpByVertexFields {
bool operator()(const Vertex& a, const Vertex& b) const {
return a.getX()==b.getX() &&
a.getY()==b.getY() &&
a.getZ()==b.getZ();
}
};