如何使用for循环圈回到起点?

时间:2019-03-28 01:13:21

标签: c++ for-loop

我有一个mainFrame。我需要从我的一个对象开始,再回圈到我开始的地方。

我正在这样做,如下:

page1

这是这样做的标准方法吗?我的问题是,一旦我检测到某些东西,就不需要继续走动。例如,如果我在第一个循环中发现了某些东西,那么就不需要遍历第二个循环。我通过在第二个循环之前添加一个额外的std::vector<std::unique_ptr<object>> myObjects_ptrs来解决这个问题;但是有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以用以下内容替换两个内部循环:

for(int j = i + 1;; j++)
{
    j %= myObjects_ptr.size();
    if (j == i)
    {
        break;
    }
    // Do stuff
}

答案 1 :(得分:1)

您可以使用模数,即两个内部循环将变为:

int numObjects = myObjects_ptr.size();
for (int j = i + 1; j < numObjects + i + 1; ++j)
{
  // Get object
  auto& obj = myObjects_ptr[j % numObjects];
}