【发布时间】:2010-11-05 18:00:41
【问题描述】:
以下哪个更好,为什么? (特别是c++)
一个。
int i(0), iMax(vec.length());//vec is a container, say std::vector
for(;i < iMax; ++i)
{
//loop body
}
b.
for( int i(0);i < vec.length(); ++i)
{
//loop body
}
由于调用了长度函数,我已经看到了 (a) 的建议。这让我很困扰。没有任何现代编译器将(b)的优化与(a)相似吗?
【问题讨论】:
-
应该把上面的改成 vec.size()
-
非常有趣的答案。令人惊讶的是,简单的问题可以成为有关堆栈溢出的良好教育的来源。
-
@Amod:请看 Andrew Shepherd 的回答:您提供的两段代码不等价!
-
示例“b”中的条件基于“悬空假设”! :)