-1

我正在尝试理解源代码,但我无法弄清楚该行for(;Q.size();)是如何工作的。有人可以帮我简化一下吗?

4

3 回答 3

2

一条for语句由三部分组成,用分号隔开:

  • 一个 初始化语句
  • 一个条件
  • 一个迭代表达式

for循环等效于以下代码:

{
    init_statement 
    while ( condition ) { 
        statement 
        iteration_expression ; 
    }
}

init-statementiteration_expression可以为空,但它们之间的分号仍然是必需的。

因此,在您的示例中,for(;Q.size();)将等效于:

{
    while ( Q.size() ) { 
        statement 
    }
}
于 2020-03-02T08:02:23.507 回答
1

这样看:

for(<do nothing>;Q.size();<do nothing>) {//do something}

现在阅读for循环的定义,看看它是否完全适合。正如其他人所提到的,本质上这等同于while(Q.size())

于 2020-03-02T07:56:58.053 回答
0

这是一个for不关心递增索引变量的循环。正如 Blaze 指出的那样,它相当于一个while循环。

for(;Q.size();)
{
   // do something while Q is not empty
}

或等效地

while(Q.size())
{
   // do something while Q is not empty
}
于 2020-03-02T07:54:50.313 回答