针对外部标志(cpp)的循环条件的更改
Change for loop condition with respect to an external flag (cpp)
我有一个如下的代码块,其中内部for
循环代码保持不变,但只有循环条件根据reverseFlag
而改变。有没有更好的方法可以在不必复制粘贴for
循环的内容两次的情况下对此进行编码?
bool reverseFlag=false;
if (reverseFlag)
{
for(int i = 1; i < TotalFrames; i++)
{...}
}
else
{
for(int i = TotalFrames-1; i >0; i--)
{...}
}
是的,您可以在单个for
循环中完成,如下所示:
int from, to, step;
if (reverseFlag) {
from = TotalFrames-1;
to = -1;
step = -1;
} else {
from = 0;
to = TotalFrames;
step = 1;
}
for (int i = from ; i != to ; i+= step) {
...
}
循环前面的一个条件准备循环的参数,即开始值和结束值以及步长,然后循环使用这三个值在所需的方向上迭代。
有几个选项。您可以:
- 使用两个循环,但将循环体放在一个单独的函数/object/lambda中。。以避免重复
-
使用递增循环并计算循环中的实际指数:
j = reverseFlag ? TotalFrames - i : i;
- 按照@dasblinkenlight的建议预先计算循环条件
请注意,如果您有一个性能关键型循环,其中一些方法可能会影响性能。如果有疑问,请检查编译器的操作并测量经过的时间。
相关文章:
- 在循环条件 i<sqrtN(预先计算)和 i*i<N 中,C++哪个更有效?
- Leetcode C++用于循环条件
- 在循环条件中调用const vector size()似乎缺少优化
- getline() 在 while 循环条件中如何计算为真或假?
- for 循环条件
- while 循环条件 c++ 中的","有什么用?
- GDB / C++ - 根据循环条件将多个变量记录到输出文件中
- 是否可以在 for 循环条件括号内使用三个分号?
- C++线程退出循环条件
- C 在循环条件下忽略
- 字符在循环条件下执行
- 有没有办法将擦除-删除成语与其他循环条件一起使用
- 我的while循环条件没有像我预期的那样评估它们
- C++ for 循环条件
- 虽然循环条件不起作用
- 虽然循环条件不起作用
- 线程未正确结束:它忽略失败的循环条件
- C++比较两个字符来验证循环条件
- 针对外部标志(cpp)的循环条件的更改
- 引用、逻辑运算符和循环条件