gpt4 book ai didi

c++ - 中途开始循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:18:59 26 4
gpt4 key购买 nike

如果我有一个条件循环,它应该表现得好像它从中途开始一样,那么最好的编码方式是什么?包含 goto 的代码(如以下代码段)是否被认为是可以接受的?

goto first_itr;
do {
doSomeStuff();
first_itr:
doSomeOtherStuff();
} while(condition);

我能看到的明显效率较低的替代方案是围绕 doSomeStuff(); 引入标志和条件,生成以下内容:

bool first = true;
do {
if(first)
first = false;
else
doSomeStuff();
doSomeOtherStuff();
} while(condition);

这是我在这种情况下通常使用的方法。是否可以依靠编译器通过有效地将其转换为第一个片段来改善这一点?

我能想到的其他替代方案可以避免 goto 并且条件会涉及重复代码,但这似乎比 goto 更糟糕。

此外,如果循环对性能至关重要,额外条件的开销会显着降低性能,那么答案会有所不同吗?

最佳答案

可能是这样的:

for (;;)
{
doSomeOtherStuff();
if (!condition) break;
doSomeStuff();
}

如果A=doSomeStuff();,B=doSomeOtherStuff();,c表示条件测试,那么我们要编码

BcABcABcABcABc ...

这可以通过遍历 ABc block (并以某种方式在第一次迭代中避免 A )来完成,如问题或 block BcA 在此解决方案中。与所有其他解决方案相比,此解决方案的优势在于它避免了代码重复,而代码重复是众所周知的维护问题。

关于c++ - 中途开始循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20007930/

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