【发布时间】:2013-02-21 10:46:23
【问题描述】:
关于BOOST_FOREACH 的用法,我想听听您的建议。
我已经阅读了它,因为它是一个非常沉重的标题,但实际上并不推荐它。
此外,它强制使用“break”和“continue”语句,因为您不能真正拥有由布尔值驱动的退出条件,而且我一直被告知应该避免使用“break”和“continue”尽可能。
当然,优点是您不直接与迭代器打交道,这简化了迭代容器的任务。
你怎么看?
您认为如果使用它应该系统地采用以保证项目中的同质性,还是仅在某些情况下才推荐使用它?
【问题讨论】:
-
"而且我一直被告知应该尽可能避免使用 "break" 和 "continue"。"你能详细说明一下吗?
-
IIRC 在过去人们没有 RAII 模式并且优化器可能会在循环变得过于“跳跃”时遇到问题时,有理由避免中断并继续。那是“单进单出”教条的时代,函数只有一个返回语句、大量的 if 和一些 goto。有些人在很久以前就学会了这些教条,从未质疑过它们,并在它们没有任何意义但会带来很多麻烦的时候将它们传播给年轻人。
-
虽然我同意你的观点,但我不得不说,在 for 循环中不使用 break 或 continue 可能是有价值的。如果您将这些关键字保留给 while 循环并同意不在 for 循环中使用它们,则意图变得更加清晰。但恕我直言,这太过分了,我不建议这样做。
标签: c++ boost for-loop boost-foreach