C++ 有人能解释一下(;Q.size();)的行是什么吗?

C++ 有人能解释一下(;Q.size();)的行是什么吗?,c++,stl,deque,que,C++,Stl,Deque,Que,我试图理解一个源代码,但我无法理解(;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 } 这样看: for(;Q.size();){//do som

我试图理解一个源代码,但我无法理解(;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
}
这样看:

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

现在请阅读
for
循环的定义,并查看它是否完美匹配。 正如其他人所提到的,本质上这相当于
,而(Q.size())
A由三部分组成,用分号分隔:

  • init语句
  • 状况
  • 迭代式
循环的
相当于此代码:

{
    init_statement 
    while ( condition ) { 
        statement 
        iteration_expression ; 
    }
}
init语句和迭代表达式可以为空,但它们之间仍然需要分号

在您的示例中,
for(;Q.size();)
因此相当于:

{
    while ( Q.size() ) { 
        statement 
    }
}
它与
while(Q.size())
相同。或者更清楚地说,
while(!Q.empty())