我想找到如何使用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?谢谢!
答案 0 :(得分:1)
你基本上拥有它......
auto found = std::find_if(
mChildren.begin(),
mChildren.end(),
[&](Ptr& p) -> bool { return p->mID == node.mID; }
);
答案 1 :(得分:1)
根据您的第一个示例,mChildren.begin().operator*()
似乎是SceneNode::Ptr SceneNode::findChild(int findID)
{
auto found = std::find_if(
mChildren.begin(), mChildren.end(),
[findID](Ptr &ptr)
{
return findID == ptr.get()->mID;
});
...
}
(或兼容的东西)的结果。
所以:
private void ReleaseOfficeObject(object o)
{
Marshal.ReleaseComObject(o);
GC.Collect();
GC.WaitForPendingFinalizers();
Marshal.FinalReleaseComObject(o);
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}
答案 2 :(得分:0)
我想你想要这样的东西:
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
成员进行比较。