【问题标题】:Two for loops in one line c++ [closed]一行中的两个for循环c ++ [关闭]
【发布时间】:2016-10-20 03:09:41
【问题描述】:

我的问题是关于一行代码中的两个 for 循环。例如:

vector < vector<int> > myArray;

for (int i; i > n; i++) for (int j; j > m; j++)
{
//Statements
myArray[i][j];
}

显然它确实用于二维数组或向量,但它们将用于哪些实际的实际示例?因为很难在单独的行中显示行和列。另外,两个for循环条件会同时变化,因为它们在同一行,整个过程更难控制。

简而言之,这样做的实际目的是什么?

【问题讨论】:

  • 我从来没有在野外见过它,但它实际上只是一个文本格式的东西。将第二个 if 移动到下一行并缩进它。现在有点清楚了。如果我确实在评论中的一行看到它,我会将其发回以重新编写以使其更清晰。

标签: c++ arrays for-loop vector iteration


【解决方案1】:

简短的回答:使代码更难阅读的实际目的通常是没有(一行上的两个for 循环肯定是)。无论您是否使用,它对编译器的输出都没有功能影响:

for (int i; i > n; i++) for (int j; j > m; j++)
{
    //Statements
    myArray[i][j];
}

for (int i; i > n; i++) 
{
    for (int j; j > m; j++)
    {
        //Statements
        myArray[i][j];
    }
}

但是,除了混淆竞赛之外,以难以阅读的方式编写代码不利于可维护性、可读性和可调试性。上面的第二个选项更容易快速阅读和理解,也更容易调试。

有很多样式指南涵盖了这一点,给出了“好”代码的示例,以及以某种方式编写代码的推理。

查看这个问题的一些链接:programming style guide for C

【讨论】:

  • 谢谢。这说得通。我更喜欢你给出的第二个例子。使内容更具可读性。
【解决方案2】:

在一行上使用多个 for 循环没有任何目的。

for (int i; i > n; i++) for (int j; j > m; j++) Statements

相当于:

for (int i; i > n; i++) {
    for (int j; j > m; j++) {
        Statements
    }
}

删除大括号只会改变代码的外观。最后也没关系。在某些情况下,它可以使您的代码看起来更干净。

【讨论】:

  • 非常感谢。现在它实际上是有道理的。
猜你喜欢
  • 1970-01-01
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多