1

我使用 STL 映射来保存有关我的顶点及其值的信息,我决定将它们作为指针保存以加快运行时间。

问题是现在我只在它们不存在时才尝试添加新顶点,因此我使用了 MAP.FIND() 函数,从逻辑上讲它不是正确的做法。(因为 find 函数现在只比较指针值而不是顶点值)

现在在谷歌搜索了一下之后,我尝试使用更长的 c-tor

struct classcomp {
    bool operator() (const Vertex* v1,const Vertex* v2) const
    {
        return v1->getX()==v2->getX() &&
               v1->getY()==v2->getY() &&
               v1->getZ()==v2->getZ();
    }
};
map<Vertex *,Position,classcomp> ;

但仍然没有成功,我做错了什么?甚至可以以与比较指针地址值不同的方式使用 find 吗?

谢谢,-绝望

更新:仍然有问题,因为你不能真正使用 bool operator< 在结构中带有 2 个参数。到目前为止,我没有发现任何有用的东西,并且所有编译试验都失败了。找不到这样做的例子。你确定它有可能用指针吗?

谢谢你。

4

1 回答 1

2

您的比较函数需要实现严格的弱排序 ( operator<) 而不是相等。

于 2013-07-12T16:51:29.723 回答