【发布时间】:2013-07-16 02:08:33
【问题描述】:
我想检查循环内的条件并在第一次满足时执行代码块。之后,循环可能会重复,但应该忽略该块。有这样的模式吗?当然,在循环之外声明一个标志很容易。但我对完全存在于循环中的方法感兴趣。
这个例子不是我想要的。有没有办法摆脱循环之外的定义?
bool flag = true;
for (;;) {
if (someCondition() && flag) {
// code that runs only once
flag = false;
}
// code that runs every time
}
【问题讨论】:
-
为什么不将该代码移出循环?
-
我看不出真实使用标志的问题。如果我不想这样做,我就把它移到别处。
-
假设“移出循环”不是您想要的,您怎么知道应该只执行一次,以及“何时”执行?
-
@sharptooth 循环是一个应用程序循环,所以它一直在运行。使用异步线程对这个来说太过分了。
-
@MatsPetersson 我只想在第一次到达该块时执行给定的代码块一次。这可能是循环的第一次迭代,但由于其他条件,它也可能稍后。
标签: c++ loops design-patterns flags control-flow