For vs While,用于在链接列表中查找最后一个项目

灰狼

我应该使用for或while循环在链表中查找最后一个项目吗?

Item * last = list;
for (; last->next; last = last->next) ;

相对

Item * last = list;
while (last->next)
{
    last = last->next;
}

它是2行而不是5行,而且可读性几乎相同。为什么我总是只看到while表单?

杰里·科芬(Jerry Coffin)

如果要比较行数,请至少尝试合理准确地进行比较。for循环的格式应更多像这样的:

Item * last = list;
for (; last->next; last = last->next) 
    ;

这使for循环(有意地)控制一个空语句变得更加明显while循环可以写成更是这样的:

Item * last = list;
while (last->next)
    last = last->next;

如果我们坚持认为即使在单个受控语句中也需要大括号,则对于每个语句,它们仍然以相同的行数结束:

Item * last = list;
for (; last->next; last = last->next) {
    ;
}

vs:

Item * last = list;
while (last->next) {
    last = last->next;
}

因此,行数的差异完全是由于您选择使用的格式(尤其是您没有为两者使用相同甚至相似的格式)。

其他人已经指出,它们很可能会编译为相同的代码,我同意您可以(并且应该)期望对于任何合理的编译器来说都是如此。

剩下的风格和可读性是唯一的区别。在这方面,for循环显然是优选的。显然从未从早期接触BASIC(或可能是FORTRAN)中恢复过来的一些人坚持认为,for循环仅应用于简单计数的循环,例如BASIC和FORTRAN中支持的循环。将此限制应用于C或C ++只是错误的做法和愚蠢的做法。for有充分的理由使C的循环变得更加通用,并且在其上施加纯粹的人为限制根本没有任何好处。

简单的经验法则:如果实际上在for循环头中使用了三个子句中的至少两个,那么使用for循环比使用循环更好while一个for与空体循环大致类似于一个空的身体构造:它可能是陌生和困惑的人谁不知道的语言,但任何人谁真正知道的语言,它的琐碎和熟悉的手指在他们的手上。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

For vs While,用于在链接列表中查找最后一个项目

来自分类Dev

链接列表:无法访问最后一个节点,获得R6010(C ++,VS2010)

来自分类Dev

VS Code打开最后一个文件

来自分类Dev

何时使用视图 Vs。一个新项目

来自分类Dev

如何在VS2013中创建一个空的MVC 5项目

来自分类Dev

如何在 VS Code 中添加对另一个项目的引用

来自分类Dev

Groovy中的“ vs”,“ vs”,“ vs”和“ vs”。何时使用什么?

来自分类Dev

如何使用JSON-LD标记面包屑列表中的最后一个非链接项目

来自分类Dev

LINQ查询,用于在列表中查找一个项目并且验证列表不包含另一个项目

来自分类Dev

Linq,将列表加入另一个列表中的最后一个项目

来自分类Dev

查找-exec + vs查找| xargs:选择哪一个?

来自分类Dev

WiX 工具集:在 VS2017 中创建一个简单的 WiX 项目中断:未找到“CreateProjectReferenceDefineConstants”任务

来自分类Dev

如何将一个VS2013项目中的通用打字稿代码共享到一个单独的VS2013项目中

来自分类Dev

VS2017 - Framework 4.6.2 在 c# 的类库项目中没有显示为一个选项,但它在一个 vb windows 窗体中

来自分类Dev

我在VS 2019中创建了一个新项目,由于VS无法找到Toolset v142而无法编译

来自分类Dev

函数参数中的int * vs int [] vs int(*)[]。我应该使用哪一个?

来自分类Dev

在一个项目中调试一些cpp文件(VS2015)

来自分类Dev

一个解决方案,两个WebForm项目-彼此访问一个页面。VS2019

来自分类Dev

NSUserDefault vs全局变量vs CD vs Singleton-一个具体的例子

来自分类Dev

Hadoop MapReduce vs MPI(vs Spark vs Mahout vs Mesos)-何时在另一个上使用?

来自分类Dev

在VS中自动创建项目

来自分类Dev

使用grep查找一行中的最后一个项目

来自分类Dev

VC ++ VS 2013,如何使用(测试)另一个项目中的类?

来自分类Dev

VS 2013 + Git + Visual Studio Online +一个项目中有多个存储库

来自分类Dev

VC ++ VS 2013,如何使用(测试)另一个项目中的类?

来自分类Dev

将 VS c# 表单项目从 pc 传输到另一个

来自分类Dev

在一个 VS 项目中使用多个工具集 - 是否存在风险?

来自分类Dev

如何在bigquery中的重复结构中查找最后一个项目

来自分类Dev

使用VS 2017映像,无法在具有一个.NET Core 3项目的解决方案中构建其他项目

Related 相关文章

  1. 1

    For vs While,用于在链接列表中查找最后一个项目

  2. 2

    链接列表:无法访问最后一个节点,获得R6010(C ++,VS2010)

  3. 3

    VS Code打开最后一个文件

  4. 4

    何时使用视图 Vs。一个新项目

  5. 5

    如何在VS2013中创建一个空的MVC 5项目

  6. 6

    如何在 VS Code 中添加对另一个项目的引用

  7. 7

    Groovy中的“ vs”,“ vs”,“ vs”和“ vs”。何时使用什么?

  8. 8

    如何使用JSON-LD标记面包屑列表中的最后一个非链接项目

  9. 9

    LINQ查询,用于在列表中查找一个项目并且验证列表不包含另一个项目

  10. 10

    Linq,将列表加入另一个列表中的最后一个项目

  11. 11

    查找-exec + vs查找| xargs:选择哪一个?

  12. 12

    WiX 工具集:在 VS2017 中创建一个简单的 WiX 项目中断:未找到“CreateProjectReferenceDefineConstants”任务

  13. 13

    如何将一个VS2013项目中的通用打字稿代码共享到一个单独的VS2013项目中

  14. 14

    VS2017 - Framework 4.6.2 在 c# 的类库项目中没有显示为一个选项,但它在一个 vb windows 窗体中

  15. 15

    我在VS 2019中创建了一个新项目,由于VS无法找到Toolset v142而无法编译

  16. 16

    函数参数中的int * vs int [] vs int(*)[]。我应该使用哪一个?

  17. 17

    在一个项目中调试一些cpp文件(VS2015)

  18. 18

    一个解决方案,两个WebForm项目-彼此访问一个页面。VS2019

  19. 19

    NSUserDefault vs全局变量vs CD vs Singleton-一个具体的例子

  20. 20

    Hadoop MapReduce vs MPI(vs Spark vs Mahout vs Mesos)-何时在另一个上使用?

  21. 21

    在VS中自动创建项目

  22. 22

    使用grep查找一行中的最后一个项目

  23. 23

    VC ++ VS 2013,如何使用(测试)另一个项目中的类?

  24. 24

    VS 2013 + Git + Visual Studio Online +一个项目中有多个存储库

  25. 25

    VC ++ VS 2013,如何使用(测试)另一个项目中的类?

  26. 26

    将 VS c# 表单项目从 pc 传输到另一个

  27. 27

    在一个 VS 项目中使用多个工具集 - 是否存在风险?

  28. 28

    如何在bigquery中的重复结构中查找最后一个项目

  29. 29

    使用VS 2017映像,无法在具有一个.NET Core 3项目的解决方案中构建其他项目

热门标签

归档