2016-06-07 141 views
-3

我有一个Node *(openList)的向量,我希望在给定targetNode时获取Node *的迭代器。它应该检查x位置,如果找到匹配,我会知道这个Node *已经存在。这是我无法在对象指针的矢量中找到对象

auto iter = std::find_if(openList.begin(), openList.end(), [&targetNode](const Node* p) 
       { 
        return (targetNode->GetXPos() == p->GetXPos() && targetNode->GetZPos() == p->GetZPos()); 
       }); 
if (iter != openList.end()) 
{ 
    ....do something 
} 

当我一步通过Visual Studio中,我注意到,有在openList多个相同的条目没有被lambda表达式捕获。任何人都可以让我知道我做错了什么,因为我从来没有进入任何东西循环?非常感谢。

+4

你在比较整数还是浮点数? – Galik

+0

GetXPos()和GetZPos()是什么类型的返回类型? – sameerkn

回答

1

该代码没有任何问题。问题可能出在GetXPos()GetZPos()之间的比较。

如果它们是整数,应该没问题,代码应该可以工作。

如果他们是双打或浮动,您必须使用其他方式比较他们(see this StackOverflow question)

如果它们是由您执行的对象,请仔细检查它们是如何被确定为相等的(您为这些对象实施operator==)。

相关问题