C++ 定义lambda以搜索指向自定义类型的指针向量
我想根据属性搜索由指向自定义类型的指针组成的向量。但我不知道如何正确定义lambda。这是我的密码C++ 定义lambda以搜索指向自定义类型的指针向量,c++,vector,stl,lambda,C++,Vector,Stl,Lambda,我想根据属性搜索由指向自定义类型的指针组成的向量。但我不知道如何正确定义lambda。这是我的密码 template<typename T> class State { public: unsigned int id; ... }; 模板 阶级国家{ 公众: 无符号整数id; ... }; 另一个类包含状态指针向量: class System { public: std::vector<State<type>*> list_; State&
template<typename T>
class State {
public:
unsigned int id;
...
};
模板
阶级国家{
公众:
无符号整数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;
}
...
};
类系统{
公众:
std::向量列表;
State*getState(无符号整数id){
auto it=find_if(list_u.begin(),list_u.end(),[id](const State*st&){st->id==id;});
if(it==list_uz.end())
返回空ptr;
归还它;
}
...
};
但是我在lambda定义中混淆了引用和指针。检查列表
是否包含具有特定id的状态
的正确方法是什么
谢谢你的帮助
关于首先,符号AND应位于参数名称之前:const State*&st
。它将st
声明为指向常量状态的指针的引用
你还必须从lambda返回一些东西
除此之外,它看起来还可以,尽管我建议您不要使用指针(它们通常不需要),或者至少使用智能指针,如。如果您实际从lambda.works返回值,将find调用更改为auto it=find_if(list.begin(),list.end(),[id](const State*&st){return(st->id==id);},可能会有所帮助代码>