gpt4 book ai didi

c++ for循环临时变量的使用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:48:40 24 4
gpt4 key购买 nike

以下哪个更好,为什么? (特别是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
}

由于调用了 length 函数,我看到了 (a) 的建议。这让我很困扰。没有任何现代编译器将 (b) 优化为类似于 (a) 吗?

最佳答案

示例 (b) 与示例 (a) 的含义不同,编译器必须在您编写时解释它。

如果,(出于某种我想不到的虚构原因),我编写了代码来执行此操作:

for( int i(0);i < vec.length(); ++i)
{
if(i%4 == 0)
vec.push_back(Widget());
}

我真的不希望编译器优化对 vec.length() 的每次调用,因为我会得到不同的结果。

关于c++ for循环临时变量的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1042281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com