c++中一行有两个for循环

Two for loops in one line c++

本文关键字:两个 for 循环 一行 c++      更新时间:2023-10-16

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

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

显然,它实际上是用于二维数组或向量,但真正的实际例子是什么呢?因为很难在单独的行中显示行和列。而且,两个for循环条件会同时改变,因为它们在同一行,这将使控制整个过程更加困难。

简单地说,这样做的实际目的是什么?

简短的回答:使代码更难阅读的实际目的通常是没有的(一行上的两个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];
    }
}

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

有许多风格指南涵盖了这一点,给出了"好"代码的示例,以及以某种方式编写代码的理由。

看一下这个问题的一些链接:C编程风格指南

没有必要在一行中使用多个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
    }
}

删除大括号只会改变代码的外观。到最后都不重要了。在某些情况下,它可以使您的代码看起来更干净。