2013-07-09 64 views
0

我想根據屬性搜索由指向自定義類型的指針組成的向量。但我不知道如何正確定義lambda。這是我的代碼。定義一個lambda以搜索指向自定義類型的向量類型

template<typename T> 
class State { 
public: 
    unsigned int id; 
    ... 
}; 

而其他類保持狀態指針的向量:

class System { 
public: 
    std::vector<State<type>*> list_; 
    State<type>* getState(unsigned int id) { 
    auto it = find_if(list_.begin(), list_.end(), [id](const State<type>* st&) {st->id == id;}); 
    if (it == list_.end()) 
     return nullptr; 
    return *it; 
    } 
... 
}; 

但我混淆了在lambda確定指標使用引用和指針。什麼是正確的方法來檢查list_是否包含state與特定的id

感謝您的幫助!

問候

+0

如果你真的從你的lambda返回一個值,這可能會有所幫助。 –

回答

0

首先,該符號應該是參數名前:const State<type>*& st。這聲明st是指向常數State<type>的指針。

你也必須實際上返回東西從lambda。

除此之外,它看起來不錯,但我建議你不要使用指針(通常不需要它們)或至少使用智能指針,如std::shared_ptr

+0

工作,更改查找調用到'auto it = find_if(list_begin(),list_.end(),[id](const state *&st){return(st-> id == id);}) ;' – user1801173

相關問題