2016-06-07 96 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==)。

相關問題