我想找到如何使用find_if根据ID查找SceneNode。我不确定如何执行此操作。
例如,我能够执行此操作以根据实际指针删除SceneNode,如下所示:
SceneNode::Ptr SceneNode::detachChild(const SceneNode& node)
{
auto found = std::find_if(mChildren.begin(), mChildren.end(), [&](Ptr& p) -> bool {return p.get() == &node; });
...
但是我不确定如果要查找SceneNodes mID变量(这是一个INT),该如何处理find_if。
即
SceneNode::Ptr SceneNode::findChild(int findID)
{
auto found = std::find_if(mChildren.begin(), mChildren.end(), ... ? = findID?; });
...
有人对我有什么好站点或信息可以很好地解释find_if吗?谢谢!
最佳答案
我想你想要这样的东西:
SceneNode::Ptr SceneNode::findChild(int findID)
{
auto found = std::find_if(std::begin(mChildren), std::end(m_children),
[=](Ptr& p) { return p->mID == findID; }
);
// ...
}
此lambda将按值捕获
findID
,并将其与mID
指向的Ptr
成员进行比较。