这个循环是做什么的?有什么意义?

What does this cycle do?What is the point?

int myDrawOrder = sprite->GetDrawOrder();
auto iter = mSprites.begin();
for(;iter != mSprites.end(); ++iter)
{
    if(myDrawOrder < (*iter)->GetDrawOrder()) //what does this line mean?
    {
        break;
    }
}

GetDrawOrder() returns精灵在队列中的位置。

循环遍历精灵,breaks 当它发现应该在 sprite 之前绘制的恶意时。您没有共享其余的代码,但大概是对那个精灵做了一些事情(例如,它被绘制了)。

由于 iter 不是循环的局部变量,因此在 循环指向 myDrawOrder < (*iter)->GetDrawOrder() 为真的第一个元素(或 mySprites.end() 如果没有的话)。

这是一个搜索操作。

也可以这样写:

const int myDrawOrder = sprite->GetDrawOrder();
auto iter = std::find_if(
   std::begin(mSprites),
   std::end(mSprites),
   [&](const auto& sprite) {
      return sprite.GetDrawOrder() >= myDrawOrder;
   }
);