如何写好while和for循环

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值