【发布时间】:2020-06-14 11:50:14
【问题描述】:
我正在尝试理解源代码,但我无法弄清楚for(;Q.size();) 行是如何工作的。有人可以帮我简化一下吗?
【问题讨论】:
-
和
while(Q.size())一样。 -
或者更清楚,
while(!Q.empty())
我正在尝试理解源代码,但我无法弄清楚for(;Q.size();) 行是如何工作的。有人可以帮我简化一下吗?
【问题讨论】:
while(Q.size())一样。
while(!Q.empty())
for statement 由三部分组成,用分号隔开:
for 循环等价于这段代码:
{
init_statement
while ( condition ) {
statement
iteration_expression ;
}
}
init-statement 和 iteration_expression 可以为空,但它们之间的分号仍然是必需的。
在您的示例中,for(;Q.size();) 将等同于:
{
while ( Q.size() ) {
statement
}
}
【讨论】:
这样看:
for(<do nothing>;Q.size();<do nothing>) {//do something}
现在阅读for 循环的定义,看看它是否完全适合。
正如其他人所提到的,本质上这等同于while(Q.size())
【讨论】:
这是一个for 循环,它不关心递增的索引变量。正如 Blaze 指出的那样,它等同于 while 循环。
for(;Q.size();)
{
// do something while Q is not empty
}
或等效
while(Q.size())
{
// do something while Q is not empty
}
【讨论】: