【问题标题】:Can someone please explain what the line for(;Q.size();) does?有人可以解释一下 for(;Q.size();) 的作用吗?
【发布时间】:2020-06-14 11:50:14
【问题描述】:

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

【问题讨论】:

  • while(Q.size())一样。
  • 或者更清楚,while(!Q.empty())

标签: c++ stl deque que


【解决方案1】:

for statement 由三部分组成,用分号隔开:

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

for 循环等价于这段代码:

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

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

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

{
    while ( Q.size() ) { 
        statement 
    }
}

【讨论】:

    【解决方案2】:

    这样看:

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

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

    【讨论】:

      【解决方案3】:

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

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

      或等效

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-22
        • 2016-12-12
        • 2011-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-09
        相关资源
        最近更新 更多