如何写好while和for循环

来源:互联网 发布:淘宝旺旺昵称怎么修改 编辑:程序博客网 时间:2024/05/17 23:18

这是编程语言的一个基本问题,其实要点无非三个:

  • 除非在刻意的情况下,避免死循环
  • 有效的循环
  • 保证循环的边界条件正确

产生死循环的主要原因是continue、goto等跳转语句的存在,因为这些跳转可能恰巧跳过了更新循环条件的地方。也许有人认为这种问题是一个正常的码农不会犯这种错误,但是,在有些条件下,真的会发生。
这些条件也可以简单的概括为以下两点:
  1. 过长的循环体,在增加了跳转语句之后产生更新循环条件的错误会大大增加
    解决方案:重构代码,缩减循环体的长度
  2. 不一致的更新条件:该问题指的是循环条件的更新条件在循环体中不同,例如在遍历vector,并且做删除操作的时候,这时候,如果使用迭代器,循环的更新有两种,一种是符合条件删除之后由erase函数返回的新迭代器,另外一种是不符合条件迭代器的自增操作。
    解决方案,在每一个跳转之前,想一想,是不是要加一个迭代器自增的操作,加么?加么?加么?数个三次,基本上就bug free了。
    另外,在这种使用迭代器做删除操作的时候,需要注意的是,在循环结束的判断不要使用保存了的end()对象,因为做了删除操作之后,end()会失效!!!
有效循环的要点是在循环中做好充分的剪枝操作,因为,循环基本上是时间开销最大的产生点,几个简单的剪枝操作可能会对程序的执行速度产生很大的影响。

最后,则是保证循环边界条件的正确性,对这一点,就不展开叙述了,因为,每一个coder在设计循环的时候,都需要用边界条件做一个简单的测试,不是么~