0

我想根据属性搜索由指向自定义类型的指针组成的向量。但我不知道如何正确定义 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_检查是否包含 astate的正确方法是id什么?

感谢帮助!

问候

4

1 回答 1

0

首先,与号应该在参数名称之前:const State<type>*& st。声明st是对指向常量的指针的引用State<type>

您还必须从 lambda实际返回一些东西。

除此之外它看起来还不错,但我建议您要么不使用指针(它们通常不需要),要么至少使用智能指针,如std::shared_ptr.

于 2013-07-09T11:13:42.840 回答