Может кто-нибудь объяснить, что делает строка для (; Q.size ();)? - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь понять исходный код и не могу понять, как должна работать строка for(;Q.size();). Может ли кто-нибудь упростить это для меня?

Ответы [ 3 ]

2 голосов
/ 02 марта 2020

A for оператор состоит из трех частей, разделенных точками с запятой:

  • an init-оператор
  • a условие
  • iteration_expression

A for l oop эквивалентно этому коду:

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

init-оператор и iteration_expression могут быть пустыми, но точки с запятой между ними все еще требуются.

В вашем примере for(;Q.size();) будет таким образом эквивалентно:

{
    while ( Q.size() ) { 
        statement 
    }
}
1 голос
/ 02 марта 2020

Посмотрите на это так:

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

Теперь прочитайте определение for l oop и убедитесь, что оно идеально подходит. Как уже упоминалось, по существу это становится эквивалентным while(Q.size())

0 голосов
/ 02 марта 2020

Это for l oop, который не заботится о возрастающей индексной переменной. Как указал Блейз, это эквивалентно while l oop.

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

или эквивалентно

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