我正在尝试理解源代码,但我不知道for(;Q.size();)
行是如何工作的。有人能帮我简化一下吗?
for
语句由三部分组成,用分号分隔:
- 一个init语句
- a条件
- 一个迭代表达式
for
循环等效于以下代码:
{
init_statement
while ( condition ) {
statement
iteration_expression ;
}
}
init语句和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
}