我想找到如何使用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成员进行比较。

08-16 09:26